Browse Source

Backport pull request #15328 from jellyfin/release-10.11.z

fix: in optimistic locking, key off table is locked

Original-merge: b5f0199a25cc221ff86d112ed6968a5352277e32

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
evanreichard 2 weeks ago
parent
commit
a7d039b7c6

+ 6 - 2
src/Jellyfin.Database/Jellyfin.Database.Implementations/Locking/OptimisticLockBehavior.cs

@@ -52,10 +52,14 @@ public class OptimisticLockBehavior : IEntityFrameworkCoreLockingBehavior
 
         _logger = logger;
         _writePolicy = Policy
-            .HandleInner<Exception>(e => e.Message.Contains("database is locked", StringComparison.InvariantCultureIgnoreCase))
+            .HandleInner<Exception>(e =>
+                e.Message.Contains("database is locked", StringComparison.InvariantCultureIgnoreCase) ||
+                e.Message.Contains("database table is locked", StringComparison.InvariantCultureIgnoreCase))
             .WaitAndRetry(sleepDurations.Length, backoffProvider, RetryHandle);
         _writeAsyncPolicy = Policy
-            .HandleInner<Exception>(e => e.Message.Contains("database is locked", StringComparison.InvariantCultureIgnoreCase))
+            .HandleInner<Exception>(e =>
+                e.Message.Contains("database is locked", StringComparison.InvariantCultureIgnoreCase) ||
+                e.Message.Contains("database table is locked", StringComparison.InvariantCultureIgnoreCase))
             .WaitAndRetryAsync(sleepDurations.Length, backoffProvider, RetryHandle);
 
         void RetryHandle(Exception exception, TimeSpan timespan, int retryNo, Context context)