Skip to content

Commit a3e6e83

Browse files
committed
bug symfony#28418 [FrameworkBundle] Register the messenger data collector only when the profiler is enabled (pierredup)
This PR was merged into the 4.1 branch. Discussion ---------- [FrameworkBundle] Register the messenger data collector only when the profiler is enabled | Q | A | ------------- | --- | Branch? | 4.1 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | symfony#28350 | License | MIT | Doc PR | N/A The data collector for the messenger is currently unconditionally registered, which causes increased memory usage even in production. Instead, it should only be registered along with the rest of the data collectors only when the profiler is enabled Commits ------- bd3a66b Register the messenger data collector only when the profiler is enabled
2 parents 92a22b0 + bd3a66b commit a3e6e83

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,9 @@
5252
<tag name="kernel.event_listener" event="kernel.controller" method="onKernelController"/>
5353
<tag name="data_collector" template="@WebProfiler/Collector/router.html.twig" id="router" priority="285" />
5454
</service>
55+
56+
<service id="data_collector.messenger" class="Symfony\Component\Messenger\DataCollector\MessengerDataCollector">
57+
<tag name="data_collector" template="@WebProfiler/Collector/messenger.html.twig" id="messenger" priority="100" />
58+
</service>
5559
</services>
5660
</container>

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,13 @@
3434
<argument type="service" id="validator" />
3535
</service>
3636

37-
<!-- Logging & Debug -->
37+
<!-- Logging -->
3838
<service id="messenger.middleware.logging" class="Symfony\Component\Messenger\Middleware\LoggingMiddleware" abstract="true">
3939
<argument type="service" id="logger" />
4040

4141
<tag name="monolog.logger" channel="messenger" />
4242
</service>
4343

44-
<service id="messenger.data_collector" class="Symfony\Component\Messenger\DataCollector\MessengerDataCollector">
45-
<tag name="data_collector" template="@WebProfiler/Collector/messenger.html.twig" id="messenger" priority="100" />
46-
</service>
47-
4844
<!-- Discovery -->
4945
<service id="messenger.receiver_locator">
5046
<tag name="container.service_locator" />

src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public function process(ContainerBuilder $container)
6464
$container->getParameterBag()->remove($busMiddlewareParameter);
6565
}
6666

67-
if ($container->hasDefinition('messenger.data_collector')) {
67+
if ($container->hasDefinition('data_collector.messenger')) {
6868
$this->registerBusToCollector($container, $busId);
6969
}
7070
}
@@ -276,7 +276,7 @@ private function registerBusToCollector(ContainerBuilder $container, string $bus
276276
(new Definition(TraceableMessageBus::class, array(new Reference($tracedBusId.'.inner'))))->setDecoratedService($busId)
277277
);
278278

279-
$container->getDefinition('messenger.data_collector')->addMethodCall('registerBus', array($busId, new Reference($tracedBusId)));
279+
$container->getDefinition('data_collector.messenger')->addMethodCall('registerBus', array($busId, new Reference($tracedBusId)));
280280
}
281281

282282
private function registerBusMiddleware(ContainerBuilder $container, string $busId, array $middlewareCollection)

src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,14 +435,14 @@ public function testRegistersTraceableBusesToCollector()
435435
$dataCollector = $this->getMockBuilder(MessengerDataCollector::class)->getMock();
436436

437437
$container = $this->getContainerBuilder($fooBusId = 'messenger.bus.foo');
438-
$container->register('messenger.data_collector', $dataCollector);
438+
$container->register('data_collector.messenger', $dataCollector);
439439
$container->setParameter('kernel.debug', true);
440440

441441
(new MessengerPass())->process($container);
442442

443443
$this->assertTrue($container->hasDefinition($debuggedFooBusId = 'debug.traced.'.$fooBusId));
444444
$this->assertSame(array($fooBusId, null, 0), $container->getDefinition($debuggedFooBusId)->getDecoratedService());
445-
$this->assertEquals(array(array('registerBus', array($fooBusId, new Reference($debuggedFooBusId)))), $container->getDefinition('messenger.data_collector')->getMethodCalls());
445+
$this->assertEquals(array(array('registerBus', array($fooBusId, new Reference($debuggedFooBusId)))), $container->getDefinition('data_collector.messenger')->getMethodCalls());
446446
}
447447

448448
public function testRegistersMiddlewareFromServices()

0 commit comments

Comments
 (0)