diff --git a/src/Symfony/Bridge/Doctrine/Middleware/IdleConnection/Listener.php b/src/Symfony/Bridge/Doctrine/Middleware/IdleConnection/Listener.php index 11f7053c5f702..ad570821d7c76 100644 --- a/src/Symfony/Bridge/Doctrine/Middleware/IdleConnection/Listener.php +++ b/src/Symfony/Bridge/Doctrine/Middleware/IdleConnection/Listener.php @@ -14,6 +14,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\KernelEvents; final class Listener implements EventSubscriberInterface @@ -29,6 +30,9 @@ public function __construct( public function onKernelRequest(RequestEvent $event): void { + if (HttpKernelInterface::MAIN_REQUEST !== $event->getRequestType()) { + return; + } $timestamp = time(); foreach ($this->connectionExpiries as $name => $expiry) { diff --git a/src/Symfony/Bridge/Doctrine/Tests/Middleware/IdleConnection/ListenerTest.php b/src/Symfony/Bridge/Doctrine/Tests/Middleware/IdleConnection/ListenerTest.php index 099ab48777133..72fa7e068f67c 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Middleware/IdleConnection/ListenerTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Middleware/IdleConnection/ListenerTest.php @@ -9,13 +9,14 @@ * file that was distributed with this source code. */ -namespace Middleware\IdleConnection; +namespace Symfony\Bridge\Doctrine\Tests\Middleware\IdleConnection; use Doctrine\DBAL\Connection as ConnectionInterface; use PHPUnit\Framework\TestCase; use Symfony\Bridge\Doctrine\Middleware\IdleConnection\Listener; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; class ListenerTest extends TestCase { @@ -34,10 +35,24 @@ public function testOnKernelRequest() ->willReturn($connectionOneMock); $listener = new Listener($connectionExpiries, $containerMock); + $event = $this->createMock(RequestEvent::class); + $event->method('getRequestType')->willReturn(HttpKernelInterface::MAIN_REQUEST); - $listener->onKernelRequest($this->createMock(RequestEvent::class)); + $listener->onKernelRequest($event); $this->assertArrayNotHasKey('connectionone', (array) $connectionExpiries); $this->assertArrayHasKey('connectiontwo', (array) $connectionExpiries); } + + public function testOnKernelRequestShouldSkipSubrequests() + { + self::expectNotToPerformAssertions(); + $arrayObj = $this->createMock(\ArrayObject::class); + $arrayObj->method('getIterator')->willThrowException(new \Exception('Invalid behavior')); + $listener = new Listener($arrayObj, $this->createMock(ContainerInterface::class)); + + $event = $this->createMock(RequestEvent::class); + $event->method('getRequestType')->willReturn(HttpKernelInterface::SUB_REQUEST); + $listener->onKernelRequest($event); + } }