diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2024-05-29 11:01:19 +0200 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2024-05-29 11:10:43 +0200 |
commit | 3fb0aa40cd0c06d208653d17d62c0ce2b358d6cc (patch) | |
tree | 938703473fcfaa49aeebdf32ae791c072d41fc80 | |
parent | b7b2966ce211a47edf710c3b2d0d3738e517fc81 (diff) | |
download | nextcloud-server-3fb0aa40cd0c06d208653d17d62c0ce2b358d6cc.tar.gz nextcloud-server-3fb0aa40cd0c06d208653d17d62c0ce2b358d6cc.zip |
feat(db): add mapping for lock wait timeout
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
-rw-r--r-- | lib/private/DB/Exceptions/DbalException.php | 4 | ||||
-rw-r--r-- | lib/public/DB/Exception.php | 7 | ||||
-rw-r--r-- | tests/lib/DB/Exception/DbalExceptionTest.php | 2 |
3 files changed, 13 insertions, 0 deletions
diff --git a/lib/private/DB/Exceptions/DbalException.php b/lib/private/DB/Exceptions/DbalException.php index 81ee9c62a0f..05ea9e22a5d 100644 --- a/lib/private/DB/Exceptions/DbalException.php +++ b/lib/private/DB/Exceptions/DbalException.php @@ -17,6 +17,7 @@ use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; use Doctrine\DBAL\Exception\InvalidArgumentException; use Doctrine\DBAL\Exception\InvalidFieldNameException; +use Doctrine\DBAL\Exception\LockWaitTimeoutException; use Doctrine\DBAL\Exception\NonUniqueFieldNameException; use Doctrine\DBAL\Exception\NotNullConstraintViolationException; use Doctrine\DBAL\Exception\RetryableException; @@ -82,6 +83,9 @@ class DbalException extends Exception { /** * Other server errors */ + if ($this->original instanceof LockWaitTimeoutException) { + return parent::REASON_LOCK_WAIT_TIMEOUT; + } if ($this->original instanceof DatabaseObjectExistsException) { return parent::REASON_DATABASE_OBJECT_EXISTS; } diff --git a/lib/public/DB/Exception.php b/lib/public/DB/Exception.php index 8fef01ca0a4..6b908382aea 100644 --- a/lib/public/DB/Exception.php +++ b/lib/public/DB/Exception.php @@ -121,6 +121,13 @@ class Exception extends BaseException { public const REASON_UNIQUE_CONSTRAINT_VIOLATION = 14; /** + * The lock wait timeout was exceeded + * + * @since 30.0.0 + */ + public const REASON_LOCK_WAIT_TIMEOUT = 15; + + /** * @return int|null * @psalm-return Exception::REASON_* * @since 21.0.0 diff --git a/tests/lib/DB/Exception/DbalExceptionTest.php b/tests/lib/DB/Exception/DbalExceptionTest.php index 97f0efa4b65..470beff9080 100644 --- a/tests/lib/DB/Exception/DbalExceptionTest.php +++ b/tests/lib/DB/Exception/DbalExceptionTest.php @@ -17,6 +17,7 @@ use Doctrine\DBAL\Exception\DriverException; use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; use Doctrine\DBAL\Exception\InvalidArgumentException; use Doctrine\DBAL\Exception\InvalidFieldNameException; +use Doctrine\DBAL\Exception\LockWaitTimeoutException; use Doctrine\DBAL\Exception\NonUniqueFieldNameException; use Doctrine\DBAL\Exception\NotNullConstraintViolationException; use Doctrine\DBAL\Exception\ServerException; @@ -45,6 +46,7 @@ class DbalExceptionTest extends \Test\TestCase { public function dataDriverException(): array { return [ + [LockWaitTimeoutException::class, DbalException::REASON_LOCK_WAIT_TIMEOUT], [ForeignKeyConstraintViolationException::class, DbalException::REASON_FOREIGN_KEY_VIOLATION], [NotNullConstraintViolationException::class, DbalException::REASON_NOT_NULL_CONSTRAINT_VIOLATION], [UniqueConstraintViolationException::class, DbalException::REASON_UNIQUE_CONSTRAINT_VIOLATION], |