Capsule
2 years ago
Concerns
1 month ago
Connectors
1 month ago
Console
1 month ago
DBAL
1 month ago
Eloquent
1 month ago
Events
1 month ago
Migrations
1 month ago
PDO
1 month ago
Query
1 month ago
Schema
1 month ago
ClassMorphViolationException.php
2 years ago
ConfigurationUrlParser.php
2 years ago
Connection.php
1 month ago
ConnectionInterface.php
2 years ago
ConnectionResolver.php
1 month ago
ConnectionResolverInterface.php
2 years ago
DatabaseManager.php
1 month ago
DatabaseServiceProvider.php
1 month ago
DatabaseTransactionRecord.php
1 month ago
DatabaseTransactionsManager.php
1 month ago
DeadlockException.php
1 month ago
DetectsConcurrencyErrors.php
2 years ago
DetectsLostConnections.php
1 month ago
Grammar.php
1 month ago
LazyLoadingViolationException.php
2 years ago
LostConnectionException.php
1 month ago
MigrationServiceProvider.php
1 month ago
MultipleColumnsSelectedException.php
1 month ago
MultipleRecordsFoundException.php
1 month ago
MySqlConnection.php
1 month ago
PostgresConnection.php
1 month ago
QueryException.php
2 years ago
RecordsNotFoundException.php
2 years ago
SQLiteConnection.php
1 month ago
SQLiteDatabaseDoesNotExistException.php
1 month ago
Seeder.php
1 month ago
SqlServerConnection.php
1 month ago
DetectsConcurrencyErrors.php
26 lines
| 1 | <?php |
| 2 | |
| 3 | namespace IAWPSCOPED\Illuminate\Database; |
| 4 | |
| 5 | use IAWPSCOPED\Illuminate\Support\Str; |
| 6 | use PDOException; |
| 7 | use Throwable; |
| 8 | /** @internal */ |
| 9 | trait DetectsConcurrencyErrors |
| 10 | { |
| 11 | /** |
| 12 | * Determine if the given exception was caused by a concurrency error such as a deadlock or serialization failure. |
| 13 | * |
| 14 | * @param \Throwable $e |
| 15 | * @return bool |
| 16 | */ |
| 17 | protected function causedByConcurrencyError(Throwable $e) |
| 18 | { |
| 19 | if ($e instanceof PDOException && ($e->getCode() === 40001 || $e->getCode() === '40001')) { |
| 20 | return \true; |
| 21 | } |
| 22 | $message = $e->getMessage(); |
| 23 | return Str::contains($message, ['Deadlock found when trying to get lock', 'deadlock detected', 'The database file is locked', 'database is locked', 'database table is locked', 'A table in the database is locked', 'has been chosen as the deadlock victim', 'Lock wait timeout exceeded; try restarting transaction', 'WSREP detected deadlock/conflict and aborted the transaction. Try restarting the transaction']); |
| 24 | } |
| 25 | } |
| 26 |