Skip to content

Commit

Permalink
timing by connection
Browse files Browse the repository at this point in the history
  • Loading branch information
alli83 committed May 1, 2024
1 parent d9b2892 commit 9dce667
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
3 changes: 1 addition & 2 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,6 @@ private function addDbalSection(ArrayNodeDefinition $node): void
->children()
->scalarNode('default_connection')->end()
->end()
->children()
->integerNode('check_connection_timing')->end()
->fixXmlConfig('type')
->children()
->arrayNode('types')
Expand Down Expand Up @@ -223,6 +221,7 @@ private function getDbalConnectionsNode(): ArrayNodeDefinition
->end()
->booleanNode('disable_type_comments')->end()
->scalarNode('server_version')->end()
->integerNode('check_connection_timing')->end()
->scalarNode('driver_class')->end()
->scalarNode('wrapper_class')->end()
->scalarNode('check_connection_frequency')->defaultValue(30)->end()
Expand Down
22 changes: 16 additions & 6 deletions src/DependencyInjection/DoctrineExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,14 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
$connWithLogging = [];
$connWithProfiling = [];
$connWithBacktrace = [];
$timingByConnection = [];
$skipTiming = false;

if (! $container->hasParameter('kernel.runtime_mode') && ! $container->hasParameter('kernel.runtime_mode.worker')) {
$container->removeDefinition('doctrine.listeners.doctrine_connection_listener');
$skipTiming = true;
}

foreach ($config['connections'] as $name => $connection) {
if ($connection['logging']) {
$connWithLogging[] = $name;
Expand All @@ -215,9 +223,17 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
}
}

if (! $skipTiming) {
$timingByConnection[] = ['name' => $connections[$name], 'timing' => $connection['check_connection_timing']];
}

$this->loadDbalConnection($name, $connection, $container);
}

if (! $skipTiming) {
$container->getDefinition('doctrine.orm.listeners.doctrine_connection_listener')->setArgument(1, $timingByConnection);
}

$container->registerForAutoconfiguration(MiddlewareInterface::class)->addTag('doctrine.middleware');

$container->registerAttributeForAutoconfiguration(AsMiddleware::class, static function (ChildDefinition $definition, AsMiddleware $attribute) {
Expand Down Expand Up @@ -258,12 +274,6 @@ protected function loadDbalConnection($name, array $connection, ContainerBuilder
$connection['profiling_collect_schema_errors'],
);

if (isset($connection['check_connection_timing'])) {
if ($container->hasParameter('kernel.runtime_mode') || $container->hasParameter('kernel.runtime_mode.worker')) {
$configuration->addMethodCall('setCheckConnectionTiming', [$connection['check_connection_timing']]);
}
}

if (isset($connection['auto_commit'])) {
$configuration->addMethodCall('setAutoCommit', [$connection['auto_commit']]);
}
Expand Down

0 comments on commit 9dce667

Please sign in to comment.