Merge branch '4.4' into 5.1

* 4.4:
  fix compatibility with Doctrine DBAL 3
This commit is contained in:
Christian Flothmann 2020-09-24 09:56:38 +02:00
commit 79686c63ef
6 changed files with 32 additions and 13 deletions

View File

@ -17,6 +17,7 @@ use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Driver\Result as DriverResult; use Doctrine\DBAL\Driver\Result as DriverResult;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection; use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Exception;
use Doctrine\DBAL\Exception\TableNotFoundException; use Doctrine\DBAL\Exception\TableNotFoundException;
use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\Cache\Exception\InvalidArgumentException; use Symfony\Component\Cache\Exception\InvalidArgumentException;
@ -109,6 +110,7 @@ class PdoAdapter extends AbstractAdapter implements PruneableInterface
* *
* @throws \PDOException When the table already exists * @throws \PDOException When the table already exists
* @throws DBALException When the table already exists * @throws DBALException When the table already exists
* @throws Exception When the table already exists
* @throws \DomainException When an unsupported PDO driver is used * @throws \DomainException When an unsupported PDO driver is used
*/ */
public function createTable() public function createTable()
@ -417,7 +419,7 @@ class PdoAdapter extends AbstractAdapter implements PruneableInterface
if (null === $driver && !($result instanceof DriverResult ? $result : $stmt)->rowCount()) { if (null === $driver && !($result instanceof DriverResult ? $result : $stmt)->rowCount()) {
try { try {
$insertStmt->execute(); $insertStmt->execute();
} catch (DBALException $e) { } catch (DBALException | Exception $e) {
} catch (\PDOException $e) { } catch (\PDOException $e) {
// A concurrent write won, let it be // A concurrent write won, let it be
} }

View File

@ -15,6 +15,7 @@ use Doctrine\DBAL\Connection;
use Doctrine\DBAL\DBALException; use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Driver\Result; use Doctrine\DBAL\Driver\Result;
use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\DriverManager;
use Doctrine\DBAL\Exception;
use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\Lock\Exception\InvalidArgumentException; use Symfony\Component\Lock\Exception\InvalidArgumentException;
use Symfony\Component\Lock\Exception\InvalidTtlException; use Symfony\Component\Lock\Exception\InvalidTtlException;
@ -126,7 +127,7 @@ class PdoStore implements PersistingStoreInterface
try { try {
$stmt->execute(); $stmt->execute();
} catch (DBALException $e) { } catch (DBALException | Exception $e) {
// the lock is already acquired. It could be us. Let's try to put off. // the lock is already acquired. It could be us. Let's try to put off.
$this->putOffExpiration($key, $this->initialTtl); $this->putOffExpiration($key, $this->initialTtl);
} catch (\PDOException $e) { } catch (\PDOException $e) {
@ -240,6 +241,7 @@ class PdoStore implements PersistingStoreInterface
* *
* @throws \PDOException When the table already exists * @throws \PDOException When the table already exists
* @throws DBALException When the table already exists * @throws DBALException When the table already exists
* @throws Exception When the table already exists
* @throws \DomainException When an unsupported PDO driver is used * @throws \DomainException When an unsupported PDO driver is used
*/ */
public function createTable(): void public function createTable(): void

View File

@ -13,6 +13,7 @@ namespace Symfony\Component\Messenger\Bridge\Doctrine\Tests\Transport;
use Doctrine\DBAL\Abstraction\Result; use Doctrine\DBAL\Abstraction\Result;
use Doctrine\DBAL\DBALException; use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Exception;
use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Query\QueryBuilder; use Doctrine\DBAL\Query\QueryBuilder;
use Doctrine\DBAL\Schema\AbstractSchemaManager; use Doctrine\DBAL\Schema\AbstractSchemaManager;
@ -88,7 +89,12 @@ class ConnectionTest extends TestCase
{ {
$this->expectException('Symfony\Component\Messenger\Exception\TransportException'); $this->expectException('Symfony\Component\Messenger\Exception\TransportException');
$driverConnection = $this->getDBALConnectionMock(); $driverConnection = $this->getDBALConnectionMock();
$driverConnection->method('delete')->willThrowException(new DBALException());
if (class_exists(Exception::class)) {
$driverConnection->method('delete')->willThrowException(new Exception());
} else {
$driverConnection->method('delete')->willThrowException(new DBALException());
}
$connection = new Connection([], $driverConnection); $connection = new Connection([], $driverConnection);
$connection->ack('dummy_id'); $connection->ack('dummy_id');
@ -98,7 +104,12 @@ class ConnectionTest extends TestCase
{ {
$this->expectException('Symfony\Component\Messenger\Exception\TransportException'); $this->expectException('Symfony\Component\Messenger\Exception\TransportException');
$driverConnection = $this->getDBALConnectionMock(); $driverConnection = $this->getDBALConnectionMock();
$driverConnection->method('delete')->willThrowException(new DBALException());
if (class_exists(Exception::class)) {
$driverConnection->method('delete')->willThrowException(new Exception());
} else {
$driverConnection->method('delete')->willThrowException(new DBALException());
}
$connection = new Connection([], $driverConnection); $connection = new Connection([], $driverConnection);
$connection->reject('dummy_id'); $connection->reject('dummy_id');

View File

@ -14,6 +14,7 @@ namespace Symfony\Component\Messenger\Bridge\Doctrine\Transport;
use Doctrine\DBAL\Connection as DBALConnection; use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\DBAL\DBALException; use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Driver\Result; use Doctrine\DBAL\Driver\Result;
use Doctrine\DBAL\Exception;
use Doctrine\DBAL\Exception\TableNotFoundException; use Doctrine\DBAL\Exception\TableNotFoundException;
use Doctrine\DBAL\Query\QueryBuilder; use Doctrine\DBAL\Query\QueryBuilder;
use Doctrine\DBAL\Schema\Comparator; use Doctrine\DBAL\Schema\Comparator;
@ -121,6 +122,7 @@ class Connection implements ResetInterface
* @return string The inserted id * @return string The inserted id
* *
* @throws \Doctrine\DBAL\DBALException * @throws \Doctrine\DBAL\DBALException
* @throws \Doctrine\DBAL\Exception
*/ */
public function send(string $body, array $headers, int $delay = 0): string public function send(string $body, array $headers, int $delay = 0): string
{ {
@ -220,7 +222,7 @@ class Connection implements ResetInterface
{ {
try { try {
return $this->driverConnection->delete($this->configuration['table_name'], ['id' => $id]) > 0; return $this->driverConnection->delete($this->configuration['table_name'], ['id' => $id]) > 0;
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
} }
@ -229,7 +231,7 @@ class Connection implements ResetInterface
{ {
try { try {
return $this->driverConnection->delete($this->configuration['table_name'], ['id' => $id]) > 0; return $this->driverConnection->delete($this->configuration['table_name'], ['id' => $id]) > 0;
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
} }

View File

@ -12,6 +12,7 @@
namespace Symfony\Component\Messenger\Bridge\Doctrine\Transport; namespace Symfony\Component\Messenger\Bridge\Doctrine\Transport;
use Doctrine\DBAL\DBALException; use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Exception;
use Doctrine\DBAL\Exception\RetryableException; use Doctrine\DBAL\Exception\RetryableException;
use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Exception\LogicException; use Symfony\Component\Messenger\Exception\LogicException;
@ -58,7 +59,7 @@ class DoctrineReceiver implements ReceiverInterface, MessageCountAwareInterface,
} }
return []; return [];
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
@ -76,7 +77,7 @@ class DoctrineReceiver implements ReceiverInterface, MessageCountAwareInterface,
{ {
try { try {
$this->connection->ack($this->findDoctrineReceivedStamp($envelope)->getId()); $this->connection->ack($this->findDoctrineReceivedStamp($envelope)->getId());
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
} }
@ -88,7 +89,7 @@ class DoctrineReceiver implements ReceiverInterface, MessageCountAwareInterface,
{ {
try { try {
$this->connection->reject($this->findDoctrineReceivedStamp($envelope)->getId()); $this->connection->reject($this->findDoctrineReceivedStamp($envelope)->getId());
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
} }
@ -100,7 +101,7 @@ class DoctrineReceiver implements ReceiverInterface, MessageCountAwareInterface,
{ {
try { try {
return $this->connection->getMessageCount(); return $this->connection->getMessageCount();
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
} }
@ -112,7 +113,7 @@ class DoctrineReceiver implements ReceiverInterface, MessageCountAwareInterface,
{ {
try { try {
$doctrineEnvelopes = $this->connection->findAll($limit); $doctrineEnvelopes = $this->connection->findAll($limit);
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }
@ -128,7 +129,7 @@ class DoctrineReceiver implements ReceiverInterface, MessageCountAwareInterface,
{ {
try { try {
$doctrineEnvelope = $this->connection->find($id); $doctrineEnvelope = $this->connection->find($id);
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }

View File

@ -12,6 +12,7 @@
namespace Symfony\Component\Messenger\Bridge\Doctrine\Transport; namespace Symfony\Component\Messenger\Bridge\Doctrine\Transport;
use Doctrine\DBAL\DBALException; use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Exception;
use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Exception\TransportException; use Symfony\Component\Messenger\Exception\TransportException;
use Symfony\Component\Messenger\Stamp\DelayStamp; use Symfony\Component\Messenger\Stamp\DelayStamp;
@ -47,7 +48,7 @@ class DoctrineSender implements SenderInterface
try { try {
$id = $this->connection->send($encodedMessage['body'], $encodedMessage['headers'] ?? [], $delay); $id = $this->connection->send($encodedMessage['body'], $encodedMessage['headers'] ?? [], $delay);
} catch (DBALException $exception) { } catch (DBALException | Exception $exception) {
throw new TransportException($exception->getMessage(), 0, $exception); throw new TransportException($exception->getMessage(), 0, $exception);
} }