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 --- Emby.Server.Implementations/Sync/SyncRepository.cs | 74 +++++++++++----------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'Emby.Server.Implementations/Sync/SyncRepository.cs') diff --git a/Emby.Server.Implementations/Sync/SyncRepository.cs b/Emby.Server.Implementations/Sync/SyncRepository.cs index 037507872..885f8e64a 100644 --- a/Emby.Server.Implementations/Sync/SyncRepository.cs +++ b/Emby.Server.Implementations/Sync/SyncRepository.cs @@ -105,9 +105,9 @@ namespace Emby.Server.Implementations.Sync throw new ArgumentNullException("id"); } - using (var connection = CreateConnection(true)) + using (WriteLock.Read()) { - using (WriteLock.Read()) + using (var connection = CreateConnection(true)) { var commandText = BaseJobSelectText + " where Id=?"; var paramList = new List(); @@ -216,9 +216,9 @@ namespace Emby.Server.Implementations.Sync CheckDisposed(); - using (var connection = CreateConnection()) + using (WriteLock.Write()) { - using (WriteLock.Write()) + using (var connection = CreateConnection()) { string commandText; var paramList = new List(); @@ -277,9 +277,9 @@ namespace Emby.Server.Implementations.Sync CheckDisposed(); - using (var connection = CreateConnection()) + using (WriteLock.Write()) { - using (WriteLock.Write()) + using (var connection = CreateConnection()) { connection.RunInTransaction(conn => { @@ -299,9 +299,9 @@ namespace Emby.Server.Implementations.Sync CheckDisposed(); - using (var connection = CreateConnection(true)) + using (WriteLock.Read()) { - using (WriteLock.Read()) + using (var connection = CreateConnection(true)) { var commandText = BaseJobSelectText; var paramList = new List(); @@ -399,9 +399,9 @@ namespace Emby.Server.Implementations.Sync var guid = new Guid(id); - using (var connection = CreateConnection(true)) + using (WriteLock.Read()) { - using (WriteLock.Read()) + using (var connection = CreateConnection(true)) { var commandText = BaseJobItemSelectText + " where Id=?"; var paramList = new List(); @@ -425,9 +425,9 @@ namespace Emby.Server.Implementations.Sync throw new ArgumentNullException("query"); } - using (var connection = CreateConnection(true)) + using (WriteLock.Read()) { - using (WriteLock.Read()) + using (var connection = CreateConnection(true)) { var commandText = baseSelectText; var paramList = new List(); @@ -505,41 +505,41 @@ namespace Emby.Server.Implementations.Sync var now = DateTime.UtcNow; - using (var connection = CreateConnection(true)) + using (WriteLock.Read()) { - var commandText = "select ItemId,Status,Progress from SyncJobItems"; - var whereClauses = new List(); - - if (!string.IsNullOrWhiteSpace(query.TargetId)) + using (var connection = CreateConnection(true)) { - whereClauses.Add("TargetId=@TargetId"); - } + var commandText = "select ItemId,Status,Progress from SyncJobItems"; + var whereClauses = new List(); - if (query.Statuses.Length > 0) - { - var statuses = string.Join(",", query.Statuses.Select(i => "'" + i.ToString() + "'").ToArray()); + if (!string.IsNullOrWhiteSpace(query.TargetId)) + { + whereClauses.Add("TargetId=@TargetId"); + } - whereClauses.Add(string.Format("Status in ({0})", statuses)); - } + if (query.Statuses.Length > 0) + { + var statuses = string.Join(",", query.Statuses.Select(i => "'" + i.ToString() + "'").ToArray()); - if (whereClauses.Count > 0) - { - commandText += " where " + string.Join(" AND ", whereClauses.ToArray()); - } + whereClauses.Add(string.Format("Status in ({0})", statuses)); + } + + if (whereClauses.Count > 0) + { + commandText += " where " + string.Join(" AND ", whereClauses.ToArray()); + } - var statementTexts = new List + var statementTexts = new List { commandText }; - commandText = commandText - .Replace("select ItemId,Status,Progress from SyncJobItems", "select ItemIds,Status,Progress from SyncJobs") - .Replace("'Synced'", "'Completed','CompletedWithError'"); + commandText = commandText + .Replace("select ItemId,Status,Progress from SyncJobItems", "select ItemIds,Status,Progress from SyncJobs") + .Replace("'Synced'", "'Completed','CompletedWithError'"); - statementTexts.Add(commandText); + statementTexts.Add(commandText); - using (WriteLock.Read()) - { var statements = connection.PrepareAll(string.Join(";", statementTexts.ToArray())) .ToList(); @@ -692,9 +692,9 @@ namespace Emby.Server.Implementations.Sync CheckDisposed(); - using (var connection = CreateConnection()) + using (WriteLock.Write()) { - using (WriteLock.Write()) + using (var connection = CreateConnection()) { string commandText; -- cgit v1.2.3