From 4366044e981663905d448668c52090dd4e5b7863 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Fri, 21 Jul 2023 16:36:29 +0200 Subject: [PATCH] [Messenger] Remove deprecated `StopWorkerOnSignalsListener` --- UPGRADE-7.0.md | 4 +- .../FrameworkExtension.php | 7 --- .../Resources/config/messenger.php | 10 ---- .../Amqp/Tests/Fixtures/long_receiver.php | 4 +- src/Symfony/Component/Messenger/CHANGELOG.md | 4 +- .../StopWorkerOnSignalsListener.php | 60 ------------------- 6 files changed, 6 insertions(+), 83 deletions(-) delete mode 100644 src/Symfony/Component/Messenger/EventListener/StopWorkerOnSignalsListener.php diff --git a/UPGRADE-7.0.md b/UPGRADE-7.0.md index ae620a5a7ead4..dab8f81de61cb 100644 --- a/UPGRADE-7.0.md +++ b/UPGRADE-7.0.md @@ -170,8 +170,8 @@ Messenger * Add parameter `$isSameDatabase` to `DoctrineTransport::configureSchema()` * Remove `MessageHandlerInterface` and `MessageSubscriberInterface`, use `#[AsMessageHandler]` instead - * Remove `StopWorkerOnSigtermSignalListener` in favor of - `StopWorkerOnSignalsListener` and make it configurable with SIGINT and + * Remove `StopWorkerOnSigtermSignalListener` in favor of using the `SignalableCommandInterface` + * Remove `StopWorkerOnSignalsListener` in favor of using the `SignalableCommandInterface` * Remove `Symfony\Component\Messenger\Transport\InMemoryTransport` and `Symfony\Component\Messenger\Transport\InMemoryTransportFactory` in favor of `Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport` and diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 2d3b0cf10c911..2c8cd891bcb47 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -108,7 +108,6 @@ use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Messenger\Bridge as MessengerBridge; use Symfony\Component\Messenger\Command\StatsCommand; -use Symfony\Component\Messenger\EventListener\StopWorkerOnSignalsListener; use Symfony\Component\Messenger\Handler\BatchHandlerInterface; use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\MessageBusInterface; @@ -2035,12 +2034,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder $container->getDefinition('messenger.transport.beanstalkd.factory')->addTag('messenger.transport_factory'); } - if (!class_exists(StopWorkerOnSignalsListener::class)) { - $container->removeDefinition('messenger.listener.stop_worker_signals_listener'); - } elseif ($config['stop_worker_on_signals']) { - $container->getDefinition('messenger.listener.stop_worker_signals_listener')->replaceArgument(0, $config['stop_worker_on_signals']); - } - if (null === $config['default_bus'] && 1 === \count($config['buses'])) { $config['default_bus'] = key($config['buses']); } diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php index 56b50d78dc0f0..556affd070c6f 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php @@ -23,7 +23,6 @@ use Symfony\Component\Messenger\EventListener\SendFailedMessageToFailureTransportListener; use Symfony\Component\Messenger\EventListener\StopWorkerOnCustomStopExceptionListener; use Symfony\Component\Messenger\EventListener\StopWorkerOnRestartSignalListener; -use Symfony\Component\Messenger\EventListener\StopWorkerOnSignalsListener; use Symfony\Component\Messenger\Handler\RedispatchMessageHandler; use Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware; use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware; @@ -201,15 +200,6 @@ ->tag('kernel.event_subscriber') ->tag('monolog.logger', ['channel' => 'messenger']) - ->set('messenger.listener.stop_worker_signals_listener', StopWorkerOnSignalsListener::class) - ->deprecate('6.4', 'symfony/messenger', 'The "%service_id%" service is deprecated, use the "Symfony\Component\Console\Command\SignalableCommandInterface" instead.') - ->args([ - null, - service('logger')->ignoreOnInvalid(), - ]) - ->tag('kernel.event_subscriber') - ->tag('monolog.logger', ['channel' => 'messenger']) - ->set('messenger.listener.stop_worker_on_stop_exception_listener', StopWorkerOnCustomStopExceptionListener::class) ->tag('kernel.event_subscriber') diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Fixtures/long_receiver.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Fixtures/long_receiver.php index 5aaca31e88cd0..35dccc1ae26e6 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Fixtures/long_receiver.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Fixtures/long_receiver.php @@ -17,7 +17,6 @@ use Symfony\Component\Messenger\Bridge\Amqp\Transport\Connection; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\EventListener\DispatchPcntlSignalListener; -use Symfony\Component\Messenger\EventListener\StopWorkerOnSignalsListener; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Transport\Serialization\Serializer; use Symfony\Component\Messenger\Worker; @@ -33,7 +32,6 @@ $connection = Connection::fromDsn(getenv('DSN')); $receiver = new AmqpReceiver($connection, $serializer); $eventDispatcher = new EventDispatcher(); -$eventDispatcher->addSubscriber(new StopWorkerOnSignalsListener()); $eventDispatcher->addSubscriber(new DispatchPcntlSignalListener()); $worker = new Worker(['the_receiver' => $receiver], new class() implements MessageBusInterface { @@ -49,5 +47,7 @@ public function dispatch($envelope, array $stamps = []): Envelope } }, $eventDispatcher); +pcntl_signal(15, fn () => $worker->stop()); + echo "Receiving messages...\n"; $worker->run(); diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index 3afc0fe89e116..469391af6c8e4 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -6,8 +6,8 @@ CHANGELOG * Add parameter `$isSameDatabase` to `DoctrineTransport::configureSchema()` * Remove `MessageHandlerInterface` and `MessageSubscriberInterface`, use `#[AsMessageHandler]` instead - * Remove `StopWorkerOnSigtermSignalListener` in favor of - `StopWorkerOnSignalsListener` and make it configurable with SIGINT and + * Remove `StopWorkerOnSigtermSignalListener` in favor of using the `SignalableCommandInterface` + * Remove `StopWorkerOnSignalsListener` in favor of using the `SignalableCommandInterface` * Remove `Symfony\Component\Messenger\Transport\InMemoryTransport` and `Symfony\Component\Messenger\Transport\InMemoryTransportFactory` in favor of `Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport` and diff --git a/src/Symfony/Component/Messenger/EventListener/StopWorkerOnSignalsListener.php b/src/Symfony/Component/Messenger/EventListener/StopWorkerOnSignalsListener.php deleted file mode 100644 index 6641d417d333e..0000000000000 --- a/src/Symfony/Component/Messenger/EventListener/StopWorkerOnSignalsListener.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Messenger\EventListener; - -use Psr\Log\LoggerInterface; -use Symfony\Component\Console\Command\SignalableCommandInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\Messenger\Event\WorkerStartedEvent; - -/** - * @author Tobias Schultze - * @author Grégoire Pineau - * - * @deprecated since Symfony 6.4, use the {@see SignalableCommandInterface} instead - */ -class StopWorkerOnSignalsListener implements EventSubscriberInterface -{ - private array $signals; - private ?LoggerInterface $logger; - - public function __construct(array $signals = null, LoggerInterface $logger = null) - { - if (null === $signals && \defined('SIGTERM')) { - $signals = [\SIGTERM, \SIGINT]; - } - $this->signals = $signals ?? []; - $this->logger = $logger; - } - - public function onWorkerStarted(WorkerStartedEvent $event): void - { - foreach ($this->signals as $signal) { - pcntl_signal($signal, function () use ($event, $signal) { - $this->logger?->info('Received signal {signal}.', ['signal' => $signal, 'transport_names' => $event->getWorker()->getMetadata()->getTransportNames()]); - - $event->getWorker()->stop(); - }); - } - } - - public static function getSubscribedEvents(): array - { - if (!\function_exists('pcntl_signal')) { - return []; - } - - return [ - WorkerStartedEvent::class => ['onWorkerStarted', 100], - ]; - } -}