bug #37441 [DoctrineBridge] work around Connection::ping() deprecation (nicolas-grekas)

This PR was merged into the 4.4 branch.

Discussion
----------

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

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Follows e603a2e233

Commits
-------

9ccf043c7c [DoctrineBridge] work around Connection::ping() deprecation
This commit is contained in:
Nicolas Grekas 2020-06-28 17:08:21 +02:00
commit 9c6d53a78b
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)