diff options
Diffstat (limited to 'Emby.Server.Implementations/Data/BaseSqliteRepository.cs')
| -rw-r--r-- | Emby.Server.Implementations/Data/BaseSqliteRepository.cs | 93 |
1 files changed, 55 insertions, 38 deletions
diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs index a34c90cb4..d207c8d4f 100644 --- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs +++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs @@ -108,37 +108,49 @@ namespace Emby.Server.Implementations.Data var db = SQLite3.Open(DbFilePath, connectionFlags, null); - if (string.IsNullOrWhiteSpace(_defaultWal)) + try { - _defaultWal = db.Query("PRAGMA journal_mode").SelectScalarString().First(); + if (string.IsNullOrWhiteSpace(_defaultWal)) + { + _defaultWal = db.Query("PRAGMA journal_mode").SelectScalarString().First(); - Logger.Info("Default journal_mode for {0} is {1}", DbFilePath, _defaultWal); - } + Logger.Info("Default journal_mode for {0} is {1}", DbFilePath, _defaultWal); + } - var queries = new List<string> - { - //"PRAGMA cache size=-10000" - //"PRAGMA read_uncommitted = true", - "PRAGMA synchronous=Normal" - }; + var queries = new List<string> + { + //"PRAGMA cache size=-10000" + //"PRAGMA read_uncommitted = true", + "PRAGMA synchronous=Normal" + }; - if (CacheSize.HasValue) - { - queries.Add("PRAGMA cache_size=" + CacheSize.Value.ToString(CultureInfo.InvariantCulture)); - } + if (CacheSize.HasValue) + { + queries.Add("PRAGMA cache_size=" + CacheSize.Value.ToString(CultureInfo.InvariantCulture)); + } - if (EnableTempStoreMemory) - { - queries.Add("PRAGMA temp_store = memory"); + if (EnableTempStoreMemory) + { + queries.Add("PRAGMA temp_store = memory"); + } + else + { + queries.Add("PRAGMA temp_store = file"); + } + + foreach (var query in queries) + { + db.Execute(query); + } } - else + catch { - queries.Add("PRAGMA temp_store = file"); - } + using (db) + { - foreach (var query in queries) - { - db.Execute(query); + } + + throw; } _connection = new ManagedConnection(db, false); @@ -265,29 +277,34 @@ namespace Emby.Server.Implementations.Data { if (dispose) { - try + DisposeConnection(); + } + } + + private void DisposeConnection() + { + try + { + lock (_disposeLock) { - lock (_disposeLock) + using (WriteLock.Write()) { - using (WriteLock.Write()) + if (_connection != null) { - if (_connection != null) + using (_connection) { - using (_connection) - { - - } - _connection = null; + _connection.Close(); } - - CloseConnection(); + _connection = null; } + + CloseConnection(); } } - catch (Exception ex) - { - Logger.ErrorException("Error disposing database", ex); - } + } + catch (Exception ex) + { + Logger.ErrorException("Error disposing database", ex); } } |
