From a9a808a9c407a14af9e041cff20e7fe6af3e5061 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 11 Dec 2016 00:12:00 -0500 Subject: fix db locking errors --- .../Data/SqliteUserDataRepository.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'Emby.Server.Implementations/Data/SqliteUserDataRepository.cs') diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs index b65e5d1b3..8acbd0bb8 100644 --- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs @@ -188,9 +188,9 @@ namespace Emby.Server.Implementations.Data { cancellationToken.ThrowIfCancellationRequested(); - using (var connection = CreateConnection()) + lock (WriteLock) { - using (WriteLock.Write()) + using (var connection = CreateConnection()) { connection.RunInTransaction(db => { @@ -259,9 +259,9 @@ namespace Emby.Server.Implementations.Data { cancellationToken.ThrowIfCancellationRequested(); - using (var connection = CreateConnection()) + lock (WriteLock) { - using (WriteLock.Write()) + using (var connection = CreateConnection()) { connection.RunInTransaction(db => { @@ -296,9 +296,9 @@ namespace Emby.Server.Implementations.Data throw new ArgumentNullException("key"); } - using (var connection = CreateConnection(true)) + lock (WriteLock) { - using (WriteLock.Read()) + using (var connection = CreateConnection(true)) { using (var statement = connection.PrepareStatement("select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from userdata where key =@Key and userId=@UserId")) { @@ -349,9 +349,9 @@ namespace Emby.Server.Implementations.Data var list = new List(); - using (var connection = CreateConnection()) + lock (WriteLock) { - using (WriteLock.Read()) + using (var connection = CreateConnection()) { using (var statement = connection.PrepareStatement("select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from userdata where userId=@UserId")) { -- cgit v1.2.3 From 7669e821f19101aa1202c2e0a1e00c7e29f46f4b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 11 Dec 2016 00:17:04 -0500 Subject: update db locks --- .../Data/BaseSqliteRepository.cs | 2 +- .../Data/SqliteItemRepository.cs | 40 +++++++++++----------- .../Data/SqliteUserDataRepository.cs | 8 ++--- 3 files changed, 25 insertions(+), 25 deletions(-) (limited to 'Emby.Server.Implementations/Data/SqliteUserDataRepository.cs') diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs index bef2ce149..be5b4d006 100644 --- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs +++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs @@ -332,7 +332,7 @@ namespace Emby.Server.Implementations.Data //{ // return new DummyToken(); //} - return new WriteLockToken(obj); + return new ReadLockToken(obj); } public static IDisposable Write(this ReaderWriterLockSlim obj) { diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index 1d9cec87e..58fcf62d9 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -388,7 +388,7 @@ namespace Emby.Server.Implementations.Data { try { - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -688,7 +688,7 @@ namespace Emby.Server.Implementations.Data tuples.Add(new Tuple, BaseItem, string>(item, ancestorIds, topParent, userdataKey)); } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -1257,7 +1257,7 @@ namespace Emby.Server.Implementations.Data CheckDisposed(); //Logger.Info("Retrieving item {0}", id.ToString("N")); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -2083,7 +2083,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -2117,7 +2117,7 @@ namespace Emby.Server.Implementations.Data throw new ArgumentNullException("id"); } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -2198,7 +2198,7 @@ namespace Emby.Server.Implementations.Data var index = 0; - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -2492,7 +2492,7 @@ namespace Emby.Server.Implementations.Data } } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -2687,7 +2687,7 @@ namespace Emby.Server.Implementations.Data statementTexts.Add(commandText); } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -2906,7 +2906,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -2977,7 +2977,7 @@ namespace Emby.Server.Implementations.Data var list = new List>(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -3091,7 +3091,7 @@ namespace Emby.Server.Implementations.Data statementTexts.Add(commandText); } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -4461,7 +4461,7 @@ namespace Emby.Server.Implementations.Data var commandText = "select Guid,InheritedTags,(select group_concat(Tags, '|') from TypedBaseItems where (guid=outer.guid) OR (guid in (Select AncestorId from AncestorIds where ItemId=Outer.guid))) as NewInheritedTags from typedbaseitems as Outer where NewInheritedTags <> InheritedTags"; - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -4535,7 +4535,7 @@ namespace Emby.Server.Implementations.Data CheckDisposed(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -4595,7 +4595,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -4636,7 +4636,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -4851,7 +4851,7 @@ namespace Emby.Server.Implementations.Data commandText += " Group By CleanValue"; - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -5030,7 +5030,7 @@ namespace Emby.Server.Implementations.Data statementTexts.Add(countText); } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -5253,7 +5253,7 @@ namespace Emby.Server.Implementations.Data CheckDisposed(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -5340,7 +5340,7 @@ namespace Emby.Server.Implementations.Data cmdText += " order by StreamIndex ASC"; - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -5385,7 +5385,7 @@ namespace Emby.Server.Implementations.Data cancellationToken.ThrowIfCancellationRequested(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs index 8acbd0bb8..b113582ed 100644 --- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs @@ -188,7 +188,7 @@ namespace Emby.Server.Implementations.Data { cancellationToken.ThrowIfCancellationRequested(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -259,7 +259,7 @@ namespace Emby.Server.Implementations.Data { cancellationToken.ThrowIfCancellationRequested(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { @@ -296,7 +296,7 @@ namespace Emby.Server.Implementations.Data throw new ArgumentNullException("key"); } - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection(true)) { @@ -349,7 +349,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - lock (WriteLock) + using (WriteLock.Write()) { using (var connection = CreateConnection()) { -- cgit v1.2.3 From 71919dcc055b8ecb64aa18ff7dbdd1eaa4621649 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 11 Dec 2016 00:27:08 -0500 Subject: update components --- .../Data/BaseSqliteRepository.cs | 42 ---------------------- .../Data/SqliteItemRepository.cs | 26 +++++++------- .../Data/SqliteUserDataRepository.cs | 4 +-- 3 files changed, 15 insertions(+), 57 deletions(-) (limited to 'Emby.Server.Implementations/Data/SqliteUserDataRepository.cs') diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs index be5b4d006..8f2bb2cea 100644 --- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs +++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs @@ -343,46 +343,4 @@ namespace Emby.Server.Implementations.Data return new WriteLockToken(obj); } } - - public static class SemaphpreSlimExtensions - { - private sealed class WriteLockToken : IDisposable - { - private SemaphoreSlim _sync; - public WriteLockToken(SemaphoreSlim sync) - { - _sync = sync; - var task = sync.WaitAsync(); - Task.WaitAll(task); - } - public void Dispose() - { - if (_sync != null) - { - _sync.Release(); - _sync = null; - } - } - } - - public class DummyToken : IDisposable - { - public void Dispose() - { - } - } - - public static IDisposable Read(this SemaphoreSlim obj) - { - return Write(obj); - } - public static IDisposable Write(this SemaphoreSlim obj) - { - //if (BaseSqliteRepository.ThreadSafeMode > 0) - //{ - // return new DummyToken(); - //} - return new WriteLockToken(obj); - } - } } diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index 58fcf62d9..e3dd3f884 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -1257,7 +1257,7 @@ namespace Emby.Server.Implementations.Data CheckDisposed(); //Logger.Info("Retrieving item {0}", id.ToString("N")); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -2083,7 +2083,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -2117,7 +2117,7 @@ namespace Emby.Server.Implementations.Data throw new ArgumentNullException("id"); } - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -2492,7 +2492,7 @@ namespace Emby.Server.Implementations.Data } } - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -2687,7 +2687,7 @@ namespace Emby.Server.Implementations.Data statementTexts.Add(commandText); } - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -2906,7 +2906,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -2977,7 +2977,7 @@ namespace Emby.Server.Implementations.Data var list = new List>(); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -3091,7 +3091,7 @@ namespace Emby.Server.Implementations.Data statementTexts.Add(commandText); } - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -4595,7 +4595,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -4636,7 +4636,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -4851,7 +4851,7 @@ namespace Emby.Server.Implementations.Data commandText += " Group By CleanValue"; - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -5030,7 +5030,7 @@ namespace Emby.Server.Implementations.Data statementTexts.Add(countText); } - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -5340,7 +5340,7 @@ namespace Emby.Server.Implementations.Data cmdText += " order by StreamIndex ASC"; - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs index b113582ed..be59d71b3 100644 --- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs @@ -296,7 +296,7 @@ namespace Emby.Server.Implementations.Data throw new ArgumentNullException("key"); } - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection(true)) { @@ -349,7 +349,7 @@ namespace Emby.Server.Implementations.Data var list = new List(); - using (WriteLock.Write()) + using (WriteLock.Read()) { using (var connection = CreateConnection()) { -- cgit v1.2.3