Skip to content

Commit 0840eb6

Browse files
[DI] skip preloading dependencies of non-preloaded services
1 parent e02d183 commit 0840eb6

File tree

10 files changed

+14
-13
lines changed

10 files changed

+14
-13
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,8 +435,7 @@ public function load(array $configs, ContainerBuilder $container)
435435
$container->registerForAutoconfiguration(CacheClearerInterface::class)
436436
->addTag('kernel.cache_clearer');
437437
$container->registerForAutoconfiguration(CacheWarmerInterface::class)
438-
->addTag('kernel.cache_warmer')
439-
->addTag('container.no_preload');
438+
->addTag('kernel.cache_warmer');
440439
$container->registerForAutoconfiguration(EventSubscriberInterface::class)
441440
->addTag('kernel.event_subscriber');
442441
$container->registerForAutoconfiguration(LocaleAwareInterface::class)

FrameworkBundle.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
use Symfony\Component\Cache\DependencyInjection\CachePoolPass;
3535
use Symfony\Component\Cache\DependencyInjection\CachePoolPrunerPass;
3636
use Symfony\Component\Config\Resource\ClassExistenceResource;
37+
use Symfony\Component\Console\ConsoleEvents;
3738
use Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass;
3839
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
3940
use Symfony\Component\DependencyInjection\Compiler\RegisterReverseContainerPass;
@@ -103,13 +104,21 @@ public function build(ContainerBuilder $container)
103104
{
104105
parent::build($container);
105106

106-
$hotPathEvents = [
107+
$registerListenersPass = new RegisterListenersPass();
108+
$registerListenersPass->setHotPathEvents([
107109
KernelEvents::REQUEST,
108110
KernelEvents::CONTROLLER,
109111
KernelEvents::CONTROLLER_ARGUMENTS,
110112
KernelEvents::RESPONSE,
111113
KernelEvents::FINISH_REQUEST,
112-
];
114+
]);
115+
if (class_exists(ConsoleEvents::class)) {
116+
$registerListenersPass->setNoPreloadEvents([
117+
ConsoleEvents::COMMAND,
118+
ConsoleEvents::TERMINATE,
119+
ConsoleEvents::ERROR,
120+
]);
121+
}
113122

114123
$container->addCompilerPass(new LoggerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -32);
115124
$container->addCompilerPass(new RegisterControllerArgumentLocatorsPass());
@@ -118,7 +127,7 @@ public function build(ContainerBuilder $container)
118127
$container->addCompilerPass(new ProfilerPass());
119128
// must be registered before removing private services as some might be listeners/subscribers
120129
// but as late as possible to get resolved parameters
121-
$container->addCompilerPass((new RegisterListenersPass())->setHotPathEvents($hotPathEvents), PassConfig::TYPE_BEFORE_REMOVING);
130+
$container->addCompilerPass($registerListenersPass, PassConfig::TYPE_BEFORE_REMOVING);
122131
$this->addCompilerPassIfExists($container, AddConstraintValidatorsPass::class);
123132
$container->addCompilerPass(new AddAnnotationsCachedReaderPass(), PassConfig::TYPE_AFTER_REMOVING, -255);
124133
$this->addCompilerPassIfExists($container, AddValidatorInitializersPass::class);

Resources/config/annotations.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
</service>
3535

3636
<service id="annotations.cache_warmer" class="Symfony\Bundle\FrameworkBundle\CacheWarmer\AnnotationsCacheWarmer">
37-
<tag name="container.no_preload" />
3837
<argument type="service" id="annotations.reader" />
3938
<argument>%kernel.cache_dir%/annotations.php</argument>
4039
<argument>#^Symfony\\(?:Component\\HttpKernel\\|Bundle\\FrameworkBundle\\Controller\\(?!.*Controller$))#</argument>

Resources/config/cache_debug.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
<argument>cache.serializer</argument>
2121
</argument>
2222
<tag name="kernel.cache_warmer" priority="64" />
23-
<tag name="container.no_preload" />
2423
</service>
2524
</services>
2625
</container>

Resources/config/console.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111
<argument type="service" id="logger" on-invalid="null" />
1212
<tag name="kernel.event_subscriber" />
1313
<tag name="monolog.logger" channel="console" />
14-
<tag name="container.no_preload" />
1514
</service>
1615

1716
<service id="console.suggest_missing_package_subscriber" class="Symfony\Bundle\FrameworkBundle\EventListener\SuggestMissingPackageSubscriber">
1817
<tag name="kernel.event_subscriber" />
19-
<tag name="container.no_preload" />
2018
</service>
2119

2220
<service id="console.command.about" class="Symfony\Bundle\FrameworkBundle\Command\AboutCommand">

Resources/config/routing.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@
101101
<service id="router.cache_warmer" class="Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer">
102102
<tag name="container.service_subscriber" id="router" />
103103
<tag name="kernel.cache_warmer" />
104-
<tag name="container.no_preload" />
105104
<argument type="service" id="Psr\Container\ContainerInterface" />
106105
</service>
107106

Resources/config/serializer.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@
113113
<argument type="collection" /><!-- Loaders injected by the extension -->
114114
<argument>%serializer.mapping.cache.file%</argument>
115115
<tag name="kernel.cache_warmer" />
116-
<tag name="container.no_preload" />
117116
</service>
118117

119118
<service id="serializer.mapping.cache.symfony" class="Psr\Cache\CacheItemPoolInterface">

Resources/config/translation.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@
139139
<service id="translation.warmer" class="Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer">
140140
<tag name="container.service_subscriber" id="translator" />
141141
<tag name="kernel.cache_warmer" />
142-
<tag name="container.no_preload" />
143142
<argument type="service" id="Psr\Container\ContainerInterface" />
144143
</service>
145144
</services>

Resources/config/validator.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
<argument type="service" id="validator.builder" />
3737
<argument>%validator.mapping.cache.file%</argument>
3838
<tag name="kernel.cache_warmer" />
39-
<tag name="container.no_preload" />
4039
</service>
4140

4241
<service id="validator.mapping.cache.adapter" class="Symfony\Component\Cache\Adapter\PhpArrayAdapter">

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"symfony/cache": "^4.4|^5.0",
2222
"symfony/config": "^5.0",
2323
"symfony/dependency-injection": "^5.1",
24+
"symfony/event-dispatcher": "^5.1",
2425
"symfony/error-handler": "^4.4.1|^5.0.1",
2526
"symfony/http-foundation": "^4.4|^5.0",
2627
"symfony/http-kernel": "^5.0",

0 commit comments

Comments
 (0)