[DoctrineBridge] work around Connection::ping() deprecation

This commit is contained in:
Nicolas Grekas 2020-06-28 16:40:16 +02:00
parent 36538369ca
commit 9ccf043c7c
2 changed files with 11 additions and 3 deletions

View File

@ -11,6 +11,7 @@
namespace Symfony\Bridge\Doctrine\Messenger;
use Doctrine\DBAL\DBALException;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Middleware\StackInterface;
@ -36,7 +37,9 @@ class DoctrinePingConnectionMiddleware extends AbstractDoctrineMiddleware
{
$connection = $entityManager->getConnection();
if (!$connection->ping()) {
try {
$connection->query($connection->getDatabasePlatform()->getDummySelectSQL());
} catch (DBALException $e) {
$connection->close();
$connection->connect();
}

View File

@ -12,6 +12,7 @@
namespace Symfony\Bridge\Doctrine\Tests\Messenger;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\DBALException;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bridge\Doctrine\Messenger\DoctrinePingConnectionMiddleware;
@ -47,8 +48,8 @@ class DoctrinePingConnectionMiddlewareTest extends MiddlewareTestCase
public function testMiddlewarePingOk()
{
$this->connection->expects($this->once())
->method('ping')
->willReturn(false);
->method('getDatabasePlatform')
->will($this->throwException(new DBALException()));
$this->connection->expects($this->once())
->method('close')
@ -65,6 +66,10 @@ class DoctrinePingConnectionMiddlewareTest extends MiddlewareTestCase
public function testMiddlewarePingResetEntityManager()
{
$this->connection->expects($this->once())
->method('getDatabasePlatform')
->will($this->throwException(new DBALException()));
$this->entityManager->expects($this->once())
->method('isOpen')
->willReturn(false)