From 23c0039ed3917cd4e63a84678c932cf9e086067f Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 27 Dec 2016 16:06:31 +0100 Subject: [PATCH 1/9] Added cache data collector and profiler page --- .../Compiler/CacheCollectorPass.php | 52 ++++++ .../FrameworkExtension.php | 1 + .../FrameworkBundle/FrameworkBundle.php | 3 + .../Resources/config/cache_debug.xml | 13 ++ .../Resources/views/Collector/cache.html.twig | 111 +++++++++++ .../Resources/views/Icon/cache.svg | 8 + .../DataCollector/CacheDataCollector.php | 175 ++++++++++++++++++ 7 files changed, 363 insertions(+) create mode 100644 src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php create mode 100644 src/Symfony/Bundle/FrameworkBundle/Resources/config/cache_debug.xml create mode 100644 src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig create mode 100644 src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg create mode 100644 src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php new file mode 100644 index 0000000000000..6e2a97ce6c69c --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler; + +use Symfony\Component\Cache\Adapter\TraceableAdapter; +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Reference; + +/** + * Inject a data collector to all the cache services to be able to get detailed statistics. + * + * @author Tobias Nyholm + */ +class CacheCollectorPass implements CompilerPassInterface +{ + /** + * {@inheritdoc} + */ + public function process(ContainerBuilder $container) + { + if (!$container->hasDefinition('data_collector.cache')) { + return; + } + + $collectorDefinition = $container->getDefinition('data_collector.cache'); + $serviceIds = $container->findTaggedServiceIds('cache.pool'); + + foreach (array_keys($serviceIds) as $id) { + if ($container->getDefinition($id)->isAbstract()) { + continue; + } + + $container->register($id.'.recorder', TraceableAdapter::class) + ->setDecoratedService($id) + ->addArgument(new Reference($id.'.recorder.inner')) + ->setPublic(false); + + // Tell the collector to add the new instance + $collectorDefinition->addMethodCall('addInstance', array($id, new Reference($id))); + } + } +} diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 597b2fd678fde..6355908b88688 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -356,6 +356,7 @@ private function registerProfilerConfiguration(array $config, ContainerBuilder $ $loader->load('profiling.xml'); $loader->load('collectors.xml'); + $loader->load('cache_debug.xml'); if ($this->formConfigEnabled) { $loader->load('form_debug.xml'); diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php index fac40a6c3ef75..20591409b2cd1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php +++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php @@ -14,6 +14,8 @@ use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddDebugLogProcessorPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddValidatorInitializersPass; +use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass; +use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CacheCollectorPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolClearerPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ControllerArgumentValueResolverPass; @@ -105,6 +107,7 @@ public function build(ContainerBuilder $container) $container->addCompilerPass(new ContainerBuilderDebugDumpPass(), PassConfig::TYPE_AFTER_REMOVING); $container->addCompilerPass(new CompilerDebugDumpPass(), PassConfig::TYPE_AFTER_REMOVING); $container->addCompilerPass(new ConfigCachePass()); + $container->addCompilerPass(new CacheCollectorPass()); } } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache_debug.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache_debug.xml new file mode 100644 index 0000000000000..3d68472028e93 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache_debug.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig new file mode 100644 index 0000000000000..ad80bca1366b5 --- /dev/null +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig @@ -0,0 +1,111 @@ +{% extends 'WebProfilerBundle:Profiler:layout.html.twig' %} + +{% block toolbar %} + {% if collector.totals.calls > 0 %} + {% set icon %} + {{ include('@WebProfiler/Icon/cache.svg') }} + {{ collector.totals.calls }} + + in + {{ '%0.2f'|format(collector.totals.time * 1000) }} + ms + + {% endset %} + {% set text %} +
+ Cache Calls + {{ collector.totals.calls }} +
+
+ Total time + {{ '%0.2f'|format(collector.totals.time * 1000) }} ms +
+
+ Cache hits + {{ collector.totals.hits }}/{{ collector.totals.reads }} ({{ collector.totals['hits/reads'] }}) +
+
+ Cache writes + {{ collector.totals.writes }} +
+ {% endset %} + {% include 'WebProfilerBundle:Profiler:toolbar_item.html.twig' with { 'link': profiler_url } %} + {% endif %} +{% endblock %} + +{% block menu %} + + + {{ include('@WebProfiler/Icon/cache.svg') }} + + Cache + + {{ collector.totals.calls }} + {{ '%0.2f'|format(collector.totals.time * 1000) }} ms + + +{% endblock %} + +{% block panel %} +

Cache

+ {% for name, calls in collector.calls %} +

Statistics for '{{ name }}'

+
+ {% for key, value in collector.statistics[name] %} +
+ + {% if key == 'time' %} + {{ '%0.2f'|format(1000*value) }} ms + {% else %} + {{ value }} + {% endif %} + + {{ key|capitalize }} +
+ {% endfor %} +
+

Calls for '{{ name }}'

+ + {% if not collector.totals.calls %} +

+ No calls. +

+ {% else %} + + + + + + + + + {% for i, call in calls %} + + + + + + + + + + + + + + + + + + {% endfor %} + + +
KeyValue
#{{ i }}Pool::{{ call.name }}
Argument{{ profiler_dump(call.argument, maxDepth=2) }}
Results + {% if call.result != false %} + {{ profiler_dump(call.result, maxDepth=1) }} + {% endif %} +
Time{{ '%0.2f'|format((call.end - call.start) * 1000) }} ms
+ {% endif %} + {% endfor %} + +{% endblock %} diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg new file mode 100644 index 0000000000000..d85f14fbead42 --- /dev/null +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg @@ -0,0 +1,8 @@ + + + + diff --git a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php new file mode 100644 index 0000000000000..917711bfd79ff --- /dev/null +++ b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php @@ -0,0 +1,175 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\DataCollector; + +use Symfony\Component\Cache\Adapter\TraceableAdapter; +use Symfony\Component\Cache\Adapter\TraceableAdapterEvent; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\DataCollector\DataCollector; + +/** + * @author Aaron Scherer + * @author Tobias Nyholm + */ +class CacheDataCollector extends DataCollector +{ + /** + * @var TraceableAdapter[] + */ + private $instances = array(); + + /** + * @param string $name + * @param TraceableAdapter $instance + */ + public function addInstance($name, TraceableAdapter $instance) + { + $this->instances[$name] = $instance; + } + + /** + * {@inheritdoc} + */ + public function collect(Request $request, Response $response, \Exception $exception = null) + { + $empty = array('calls' => array(), 'config' => array(), 'options' => array(), 'statistics' => array()); + $this->data = array('instances' => $empty, 'total' => $empty); + foreach ($this->instances as $name => $instance) { + $calls = $instance->getCalls(); + foreach ($calls as $call) { + if (isset($call->result)) { + $call->result = $this->cloneVar($call->result); + } + if (isset($call->argument)) { + $call->argument = $this->cloneVar($call->argument); + } + } + $this->data['instances']['calls'][$name] = $calls; + } + + $this->data['instances']['statistics'] = $this->calculateStatistics(); + $this->data['total']['statistics'] = $this->calculateTotalStatistics(); + } + + /** + * {@inheritdoc} + */ + public function getName() + { + return 'cache'; + } + + /** + * Method returns amount of logged Cache reads: "get" calls. + * + * @return array + */ + public function getStatistics() + { + return $this->data['instances']['statistics']; + } + + /** + * Method returns the statistic totals. + * + * @return array + */ + public function getTotals() + { + return $this->data['total']['statistics']; + } + + /** + * Method returns all logged Cache call objects. + * + * @return mixed + */ + public function getCalls() + { + return $this->data['instances']['calls']; + } + + /** + * @return array + */ + private function calculateStatistics() + { + $statistics = array(); + foreach ($this->data['instances']['calls'] as $name => $calls) { + $statistics[$name] = array( + 'calls' => 0, + 'time' => 0, + 'reads' => 0, + 'hits' => 0, + 'misses' => 0, + 'writes' => 0, + 'deletes' => 0, + ); + /** @var TraceableAdapterEvent $call */ + foreach ($calls as $call) { + $statistics[$name]['calls'] += 1; + $statistics[$name]['time'] += $call->end - $call->start; + if ($call->name === 'getItem') { + $statistics[$name]['reads'] += 1; + if ($call->hits) { + $statistics[$name]['hits'] += 1; + } else { + $statistics[$name]['misses'] += 1; + } + } elseif ($call->name === 'getItems') { + $count = $call->hits + $call->misses; + $statistics[$name]['reads'] += $count; + $statistics[$name]['hits'] += $call->hits; + $statistics[$name]['misses'] += $count - $call->misses; + } elseif ($call->name === 'hasItem') { + $statistics[$name]['reads'] += 1; + if ($call->result === false) { + $statistics[$name]['misses'] += 1; + } + } elseif ($call->name === 'save') { + $statistics[$name]['writes'] += 1; + } elseif ($call->name === 'deleteItem') { + $statistics[$name]['deletes'] += 1; + } + } + if ($statistics[$name]['reads']) { + $statistics[$name]['hits/reads'] = round(100 * $statistics[$name]['hits'] / $statistics[$name]['reads'], 2).'%'; + } else { + $statistics[$name]['hits/reads'] = 'N/A'; + } + } + + return $statistics; + } + + /** + * @return array + */ + private function calculateTotalStatistics() + { + $statistics = $this->getStatistics(); + $totals = array('calls' => 0, 'time' => 0, 'reads' => 0, 'hits' => 0, 'misses' => 0, 'writes' => 0); + foreach ($statistics as $name => $values) { + foreach ($totals as $key => $value) { + $totals[$key] += $statistics[$name][$key]; + } + } + if ($totals['reads']) { + $totals['hits/reads'] = round(100 * $totals['hits'] / $totals['reads'], 2).'%'; + } else { + $totals['hits/reads'] = 'N/A'; + } + + return $totals; + } +} From 8f73434e7843a4eb0b7da09c0813bad21998c020 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Thu, 29 Dec 2016 12:06:27 +0100 Subject: [PATCH 2/9] Make sure we count hits/reads from hasItem --- .../Component/Cache/DataCollector/CacheDataCollector.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php index 917711bfd79ff..4e93e87533942 100644 --- a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php +++ b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php @@ -133,8 +133,10 @@ private function calculateStatistics() $statistics[$name]['misses'] += $count - $call->misses; } elseif ($call->name === 'hasItem') { $statistics[$name]['reads'] += 1; - if ($call->result === false) { + if ($call->result->getRawData()[0][0] === false) { $statistics[$name]['misses'] += 1; + } else { + $statistics[$name]['hits'] += 1; } } elseif ($call->name === 'save') { $statistics[$name]['writes'] += 1; From 32376dd3ceed5d91c654b71333bce450ec7dc483 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Thu, 29 Dec 2016 15:53:02 +0100 Subject: [PATCH 3/9] Update logo --- .../WebProfilerBundle/Resources/views/Icon/cache.svg | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg index d85f14fbead42..984a4efd4a475 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/cache.svg @@ -1,8 +1,3 @@ - - - + + From d63adcdb429480b7b5141c1c8016de78ad1473a2 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 3 Jan 2017 10:26:14 +0100 Subject: [PATCH 4/9] yoda style --- .../Cache/DataCollector/CacheDataCollector.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php index 4e93e87533942..4cda47e6bffbe 100644 --- a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php +++ b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php @@ -119,28 +119,28 @@ private function calculateStatistics() foreach ($calls as $call) { $statistics[$name]['calls'] += 1; $statistics[$name]['time'] += $call->end - $call->start; - if ($call->name === 'getItem') { + if ('getItem' === $call->name) { $statistics[$name]['reads'] += 1; if ($call->hits) { $statistics[$name]['hits'] += 1; } else { $statistics[$name]['misses'] += 1; } - } elseif ($call->name === 'getItems') { + } elseif ('getItems' === $call->name) { $count = $call->hits + $call->misses; $statistics[$name]['reads'] += $count; $statistics[$name]['hits'] += $call->hits; $statistics[$name]['misses'] += $count - $call->misses; - } elseif ($call->name === 'hasItem') { + } elseif ('hasItem' === $call->name) { $statistics[$name]['reads'] += 1; - if ($call->result->getRawData()[0][0] === false) { + if (false === $call->result->getRawData()[0][0]) { $statistics[$name]['misses'] += 1; } else { $statistics[$name]['hits'] += 1; } - } elseif ($call->name === 'save') { + } elseif ('save' === $call->name) { $statistics[$name]['writes'] += 1; - } elseif ($call->name === 'deleteItem') { + } elseif ('deleteItem' === $call->name) { $statistics[$name]['deletes'] += 1; } } From 321e526d97fb747067affbc49f7e96ecb638c197 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 3 Jan 2017 10:43:13 +0100 Subject: [PATCH 5/9] Added large summary numbers --- .../Resources/views/Collector/cache.html.twig | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig index ad80bca1366b5..ee388fceb29b3 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig @@ -48,6 +48,33 @@ {% block panel %}

Cache

+
+
+ {{ collector.totals.calls }} + Total calls +
+
+ {{ '%0.2f'|format(collector.totals.time * 1000) }} ms + Total time +
+
+ {{ collector.totals.calls }} + Total hits +
+
+ {{ collector.totals.reads }} + Total reads +
+
+ {{ collector.totals['hits/reads'] }} + Hits/reads +
+
+ {{ collector.totals.writes }} + Total writes +
+
+ {% for name, calls in collector.calls %}

Statistics for '{{ name }}'

@@ -55,9 +82,9 @@
{% if key == 'time' %} - {{ '%0.2f'|format(1000*value) }} ms + {{ '%0.2f'|format(1000*value) }} ms {% else %} - {{ value }} + {{ value }} {% endif %} {{ key|capitalize }} From 26ea3e96ecb037c3f1be1ea4db6151155cdbf378 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 3 Jan 2017 10:43:43 +0100 Subject: [PATCH 6/9] rewite to show attributes --- .../DependencyInjection/Compiler/CacheCollectorPass.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php index 6e2a97ce6c69c..3d1908bf9bc92 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CacheCollectorPass.php @@ -33,9 +33,7 @@ public function process(ContainerBuilder $container) } $collectorDefinition = $container->getDefinition('data_collector.cache'); - $serviceIds = $container->findTaggedServiceIds('cache.pool'); - - foreach (array_keys($serviceIds) as $id) { + foreach ($container->findTaggedServiceIds('cache.pool') as $id => $attributes) { if ($container->getDefinition($id)->isAbstract()) { continue; } From 9e12faca1c8362e99ab579ec4be570d58f0fdaaa Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 3 Jan 2017 10:47:02 +0100 Subject: [PATCH 7/9] Changed order --- .../Resources/views/Collector/cache.html.twig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig index ee388fceb29b3..17d57e281183f 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig @@ -57,14 +57,14 @@ {{ '%0.2f'|format(collector.totals.time * 1000) }} ms Total time
-
- {{ collector.totals.calls }} - Total hits -
{{ collector.totals.reads }} Total reads
+
+ {{ collector.totals.hits }} + Total hits +
{{ collector.totals['hits/reads'] }} Hits/reads From d09bcf32c5596b63a67baf40163b41059c4fa500 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Tue, 3 Jan 2017 10:52:12 +0100 Subject: [PATCH 8/9] Added deletes --- .../Resources/views/Collector/cache.html.twig | 12 ++++++++++-- .../Cache/DataCollector/CacheDataCollector.php | 10 +++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig index 17d57e281183f..cd096699df799 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/cache.html.twig @@ -66,13 +66,21 @@ Total hits
- {{ collector.totals['hits/reads'] }} - Hits/reads + {{ collector.totals.misses }} + Total misses
{{ collector.totals.writes }} Total writes
+
+ {{ collector.totals.deletes }} + Total deletes +
+
+ {{ collector.totals['hits/reads'] }} + Hits/reads +
{% for name, calls in collector.calls %} diff --git a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php index 4cda47e6bffbe..200867c0ec7ec 100644 --- a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php +++ b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php @@ -160,7 +160,15 @@ private function calculateStatistics() private function calculateTotalStatistics() { $statistics = $this->getStatistics(); - $totals = array('calls' => 0, 'time' => 0, 'reads' => 0, 'hits' => 0, 'misses' => 0, 'writes' => 0); + $totals = array( + 'calls' => 0, + 'time' => 0, + 'reads' => 0, + 'hits' => 0, + 'misses' => 0, + 'writes' => 0, + 'deletes' => 0, + ); foreach ($statistics as $name => $values) { foreach ($totals as $key => $value) { $totals[$key] += $statistics[$name][$key]; From 9f1aa409b207b41abb5fa036559e1906d42e6d16 Mon Sep 17 00:00:00 2001 From: Tobias Nyholm Date: Sat, 14 Jan 2017 10:06:04 +0100 Subject: [PATCH 9/9] Fixed rebase --- src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php index 20591409b2cd1..535fa0a5b7caf 100644 --- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php +++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php @@ -14,7 +14,6 @@ use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddDebugLogProcessorPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddValidatorInitializersPass; -use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CacheCollectorPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass; use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolClearerPass;