Skip to content

Commit 57a10ef

Browse files
committed
feature #37712 [Mailer] Prevent MessageLoggerListener from leaking in env=prod (vudaltsov)
This PR was squashed before being merged into the 5.2-dev branch. Discussion ---------- [Mailer] Prevent MessageLoggerListener from leaking in env=prod | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | yes | Deprecations? | yes | License | MIT I was trying to send a batch of emails with `--env=prod` when I noticed that `MessageLoggerListener` was still collecting all the messages and leaking the memory. I tried to do `$this->getApplication()->reset()`, but it didn't work because `MessageLoggerListener` was not tagged (now fixed in #37705). In this PR I propose to move the declaration of `MessageLoggerListener` to `mailer_debug.php` since the only service depending on it is `mailer.data_collector` from `mailer_debug.php`. If a developer needs to collect sent emails, a custom listener could be implemented on the project side. - [x] deprecate the service - [x] add a new one to `mailer_debug.php` - [ ] add a line to CHANGELOG.md - [ ] add a line to UPGRADE-5.2.md Commits ------- e226775d97 [Mailer] Prevent MessageLoggerListener from leaking in env=prod
2 parents 1bcb051 + b9ba63c commit 57a10ef

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

Resources/config/mailer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,6 @@
7171

7272
->set('mailer.logger_message_listener', MessageLoggerListener::class)
7373
->tag('kernel.event_subscriber')
74+
->deprecate('symfony/framework-bundle', '5.2', 'The "%service_id%" service is deprecated, use "mailer.message_logger_listener" instead.')
7475
;
7576
};

Resources/config/mailer_debug.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,21 @@
1212
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1313

1414
use Symfony\Component\Mailer\DataCollector\MessageDataCollector;
15+
use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
1516

1617
return static function (ContainerConfigurator $container) {
1718
$container->services()
1819
->set('mailer.data_collector', MessageDataCollector::class)
1920
->args([
20-
service('mailer.logger_message_listener'),
21+
service('mailer.message_logger_listener'),
2122
])
22-
->tag('data_collector', [
23-
'template' => '@WebProfiler/Collector/mailer.html.twig',
24-
'id' => 'mailer',
25-
])
23+
->tag('data_collector', [
24+
'template' => '@WebProfiler/Collector/mailer.html.twig',
25+
'id' => 'mailer',
26+
])
27+
28+
->set('mailer.message_logger_listener', MessageLoggerListener::class)
29+
->tag('kernel.event_subscriber')
30+
->tag('kernel.reset', ['method' => 'reset'])
2631
;
2732
};

0 commit comments

Comments
 (0)