8000 bug #21339 [FrameworkBundle] CachePoolClearerPass fails if "cache.ann… · symfony/symfony@ef4a474 · GitHub
[go: up one dir, main page]

Skip to content

Commit ef4a474

Browse files
author
Antanas Arvasevicius
committed
bug #21339 [FrameworkBundle] CachePoolClearerPass fails if "cache.annotations" service is created
1 parent 922b7c1 commit ef4a474

File tree

3 files changed

+45
-18
lines changed

3 files changed

+45
-18
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
13+
14+
use Symfony\Component\Cache\Adapter\AbstractAdapter;
15+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
16+
use Symfony\Component\DependencyInjection\ContainerBuilder;
17+
use Symfony\Component\DependencyInjection\Reference;
18+
19+
final class CacheAnnotationsMonologInjectorPass implements CompilerPassInterface
20+
{
21+
/**
22+
* {@inheritdoc}
23+
*/
24+
public function process(ContainerBuilder $container)
25+
{
26+
if (!($container->hasDefinition('cache.annotations') || $container->hasAlias('cache.annotations'))) {
27+
return;
28+
}
29+
$factory = array(AbstractAdapter::class, 'createSystemCache');
30+
$annotationsPool = $container->findDefinition('cache.annotations');
31+
if ($factory !== $annotationsPool->getFactory() || 4 !== count($annotationsPool->getArguments())) {
32+
return;
33+
}
34+
if ($container->has('monolog.logger.cache')) {
35+
$annotationsPool->addArgument(new Reference('monolog.logger.cache'));
36+
} elseif ($container->hasDefinition('cache.system')) {
37+
$systemPool = $container->getDefinition('cache.system');
38+
if ($factory === $systemPool->getFactory() && 5 <= count($systemArgs = $systemPool->getArguments())) {
39+
$annotationsPool->addArgument($systemArgs[4]);
40+
}
41+
}
42+
}
43+
}

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

14-
use Symfony\Component\Cache\Adapter\AbstractAdapter;
1514
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1615
use Symfony\Component\DependencyInjection\ContainerBuilder;
1716
use Symfony\Component\DependencyInjection\Reference;
@@ -39,22 +38,5 @@ public function process(ContainerBuilder $container)
3938
}
4039
}
4140
}
42-
43-
if (!$container->has('cache.annotations')) {
44-
return;
45-
}
46-
$factory = array(AbstractAdapter::class, 'createSystemCache');
47-
$annotationsPool = $container->getDefinition('cache.annotations');
48-
if ($factory !== $annotationsPool->getFactory() || 4 !== count($annotationsPool->getArguments())) {
49-
return;
50-
}
51-
if ($container->has('monolog.logger.cache')) {
52-
$annotationsPool->addArgument(new Reference('monolog.logger.cache'));
53-
} elseif ($container->has('cache.system')) {
54-
$systemPool = $container->getDefinition('cache.system');
55-
if ($factory === $systemPool->getFactory() && 5 <= count($systemArgs = $systemPool->getArguments())) {
56-
$annotationsPool->addArgument($systemArgs[4]);
57-
}
58-
}
5941
}
6042
}

src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddDebugLogProcessorPass;
1616
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddValidatorInitializersPass;
1717
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass;
18+
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CacheAnnotationsMonologInjectorPass;
1819
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass;
1920
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolClearerPass;
2021
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ControllerArgumentValueResolverPass;
@@ -96,6 +97,7 @@ public function build(ContainerBuilder $container)
9697
$container->addCompilerPass(new CachePoolPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 32);
9798
$container->addCompilerPass(new ValidateWorkflowsPass());
9899
$container->addCompilerPass(new CachePoolClearerPass(), PassConfig::TYPE_AFTER_REMOVING);
100+
$container->addCompilerPass(new CacheAnnotationsMonologInjectorPass(), PassConfig::TYPE_BEFORE_REMOVING, 32);
99101

100102
if ($container->getParameter('kernel.debug')) {
101103
$container->addCompilerPass(new AddDebugLogProcessorPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -32);

0 commit comments

Comments
 (0)
0