Skip to content

Commit 6c49418

Browse files
authored
fix: make profiler configurable and disable it by default in non-debug mode (#1243)
The profiler.yaml was loaded unconditionally, causing GraphQLCollector's event listener to run on every GraphQL request in production — parsing queries and deep-cloning results for data that was never consumed. Add an `enabled` option to the `profiler` configuration section, defaulting to `kernel.debug`. This allows explicit control while ensuring profiler services are only registered in dev/test by default.
1 parent 7e9f36e commit 6c49418

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

src/DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ private function profilerSection(): ArrayNodeDefinition
311311

312312
// @phpstan-ignore-next-line
313313
$node
314+
->{$this->debug ? 'canBeDisabled' : 'canBeEnabled'}()
314315
->addDefaultsIfNotSet()
315316
->children()
316317
->scalarNode('query_match')->defaultNull()->end()

src/DependencyInjection/OverblogGraphQLExtension.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ final class OverblogGraphQLExtension extends Extension
3838
{
3939
public function load(array $configs, ContainerBuilder $container): void
4040
{
41-
$this->loadConfigFiles($container);
4241
$configuration = $this->getConfiguration($configs, $container);
4342
$config = $this->processConfiguration($configuration, $configs);
4443

44+
$this->loadConfigFiles($config, $container);
4545
$this->setBatchingMethod($config, $container);
4646
$this->setServicesAliases($config, $container);
4747
$this->setSchemaBuilderArguments($config, $container);
@@ -75,7 +75,7 @@ public function getConfiguration(array $config, ContainerBuilder $container): Co
7575
);
7676
}
7777

78-
private function loadConfigFiles(ContainerBuilder $container): void
78+
private function loadConfigFiles(array $config, ContainerBuilder $container): void
7979
{
8080
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
8181
$loader->load('services.yaml');
@@ -86,7 +86,10 @@ private function loadConfigFiles(ContainerBuilder $container): void
8686
$loader->load('expression_language_functions.yaml');
8787
$loader->load('definition_config_processors.yaml');
8888
$loader->load('aliases.yaml');
89-
$loader->load('profiler.yaml');
89+
90+
if ($config['profiler']['enabled']) {
91+
$loader->load('profiler.yaml');
92+
}
9093
}
9194

9295
private function registerForAutoconfiguration(ContainerBuilder $container): void
@@ -143,6 +146,10 @@ private function setDefinitionParameters(array $config, ContainerBuilder $contai
143146

144147
private function setProfilerParameters(array $config, ContainerBuilder $container): void
145148
{
149+
if (!$config['profiler']['enabled']) {
150+
return;
151+
}
152+
146153
$container->setParameter($this->getAlias().'.profiler.query_match', $config['profiler']['query_match']);
147154
}
148155

0 commit comments

Comments
 (0)