diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 893d6ea62..200898a62 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -124,18 +124,24 @@ namespace MediaBrowser.Server.Implementations.Persistence "create index if not exists idx_ChildrenIds on ChildrenIds(ParentId,ItemId)", //pragmas - "pragma temp_store = memory" + "pragma temp_store = memory", + + "pragma shrink_memory" }; _connection.RunQueries(queries, _logger); PrepareStatements(); - + _mediaStreamsRepository.Initialize(); _providerInfoRepository.Initialize(); _chapterRepository.Initialize(); + + _shrinkMemoryTimer = new SqliteShrinkMemoryTimer(_connection, _writeLock, _logger); } + private SqliteShrinkMemoryTimer _shrinkMemoryTimer; + /// <summary> /// The _write lock /// </summary> @@ -402,6 +408,12 @@ namespace MediaBrowser.Server.Implementations.Persistence { lock (_disposeLock) { + if (_shrinkMemoryTimer != null) + { + _shrinkMemoryTimer.Dispose(); + _shrinkMemoryTimer = null; + } + if (_connection != null) { if (_connection.IsOpen()) @@ -412,30 +424,30 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.Dispose(); _connection = null; } + + if (_chapterRepository != null) + { + _chapterRepository.Dispose(); + _chapterRepository = null; + } + + if (_mediaStreamsRepository != null) + { + _mediaStreamsRepository.Dispose(); + _mediaStreamsRepository = null; + } + + if (_providerInfoRepository != null) + { + _providerInfoRepository.Dispose(); + _providerInfoRepository = null; + } } } catch (Exception ex) { _logger.ErrorException("Error disposing database", ex); } - - if (_chapterRepository != null) - { - _chapterRepository.Dispose(); - _chapterRepository = null; - } - - if (_mediaStreamsRepository != null) - { - _mediaStreamsRepository.Dispose(); - _mediaStreamsRepository = null; - } - - if (_providerInfoRepository != null) - { - _providerInfoRepository.Dispose(); - _providerInfoRepository = null; - } } } |
