Files
piratepoet/mailpoet/lib/Doctrine/SerializableConnection.php
Jan Lysý fb7ccbd8b9 Add missing handling database server timeout
Because we updated form Doctrine DBAL 2 to DBAL 3 we need to use a different handling for database server timeouts.
[MAILPOET-6101]
2024-06-17 12:38:08 +02:00

77 lines
2.3 KiB
PHP

<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
namespace MailPoet\Doctrine;
use MailPoet\Util\Helpers;
use MailPoetVendor\Doctrine\Common\EventManager;
use MailPoetVendor\Doctrine\DBAL\Cache\QueryCacheProfile;
use MailPoetVendor\Doctrine\DBAL\Configuration;
use MailPoetVendor\Doctrine\DBAL\Connection;
use MailPoetVendor\Doctrine\DBAL\Driver;
use MailPoetVendor\Doctrine\DBAL\Result;
use Throwable;
class SerializableConnection extends Connection {
private $params;
private $driver;
private $config;
private $eventManager;
public function __construct(
array $params,
Driver $driver,
Configuration $config = null,
EventManager $eventManager = null
) {
$this->params = $params;
$this->driver = $driver;
$this->config = $config;
$this->eventManager = $eventManager;
parent::__construct($params, $driver, $config, $eventManager);
}
public function __sleep() {
return ['params', 'driver', 'config', 'eventManager'];
}
public function __wakeup() {
parent::__construct($this->params, $this->driver, $this->config, $this->eventManager);
}
public function rollBack() {
try {
return parent::rollBack();
} catch (Throwable $e) {
$mySqlGoneAwayMessage = Helpers::mySqlGoneAwayExceptionHandler($e);
if ($mySqlGoneAwayMessage) {
throw new \Exception($mySqlGoneAwayMessage, (int)$e->getCode(), $e);
}
throw $e;
}
}
public function executeQuery(string $sql, array $params = [], $types = [], ?QueryCacheProfile $qcp = null): Result {
try {
return parent::executeQuery($sql, $params, $types, $qcp);
} catch (Throwable $e) {
$mySqlGoneAwayMessage = Helpers::mySqlGoneAwayExceptionHandler($e);
if ($mySqlGoneAwayMessage) {
throw new \Exception($mySqlGoneAwayMessage, (int)$e->getCode(), $e);
}
throw $e;
}
}
public function executeStatement($sql, array $params = [], array $types = []) {
try {
return parent::executeStatement($sql, $params, $types);
} catch (Throwable $e) {
$mySqlGoneAwayMessage = Helpers::mySqlGoneAwayExceptionHandler($e);
if ($mySqlGoneAwayMessage) {
throw new \Exception($mySqlGoneAwayMessage, (int)$e->getCode(), $e);
}
throw $e;
}
}
}