Capsule
2 years ago
Concerns
2 years ago
Connectors
2 years ago
Console
2 years ago
DBAL
2 years ago
Eloquent
2 years ago
Events
2 years ago
Migrations
2 years ago
PDO
2 years ago
Query
2 years ago
Schema
2 years ago
ClassMorphViolationException.php
2 years ago
ConfigurationUrlParser.php
2 years ago
Connection.php
2 years ago
ConnectionInterface.php
2 years ago
ConnectionResolver.php
2 years ago
ConnectionResolverInterface.php
2 years ago
DatabaseManager.php
2 years ago
DatabaseServiceProvider.php
2 years ago
DatabaseTransactionRecord.php
2 years ago
DatabaseTransactionsManager.php
2 years ago
DetectsConcurrencyErrors.php
2 years ago
DetectsLostConnections.php
2 years ago
Grammar.php
2 years ago
LazyLoadingViolationException.php
2 years ago
MigrationServiceProvider.php
2 years ago
MultipleRecordsFoundException.php
2 years ago
MySqlConnection.php
2 years ago
PostgresConnection.php
2 years ago
QueryException.php
2 years ago
RecordsNotFoundException.php
2 years ago
SQLiteConnection.php
2 years ago
Seeder.php
2 years ago
SqlServerConnection.php
2 years ago
DetectsConcurrencyErrors.php
26 lines
| 1 | <?php |
| 2 | |
| 3 | namespace IAWP_SCOPED\Illuminate\Database; |
| 4 | |
| 5 | use IAWP_SCOPED\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 |