diff --git a/LiteDB/Engine/Disk/DiskWriterQueue.cs b/LiteDB/Engine/Disk/DiskWriterQueue.cs index 88f0c1653..a5b878af4 100644 --- a/LiteDB/Engine/Disk/DiskWriterQueue.cs +++ b/LiteDB/Engine/Disk/DiskWriterQueue.cs @@ -72,7 +72,8 @@ private void ExecuteQueue() } else { - _stream.FlushToDisk(); + TryFlushStream(); + lock (_queueSync) { if (_queue.Count > 0) continue; @@ -85,6 +86,18 @@ private void ExecuteQueue() } } + private void TryFlushStream() + { + try + { + _stream.FlushToDisk(); + } + catch (IOException) + { + // Disk is probably full. This may be unrecoverable problem but until we have enough space in the buffer we may be ok. + } + } + private void WritePageToStream(PageBuffer page) { if (page == null) return;