From 57606e3e180f65edacd673b31bd7f639b7f6ddbf Mon Sep 17 00:00:00 2001 From: Dan Larkin Date: Tue, 2 May 2017 17:00:45 -0400 Subject: [PATCH] Fixed logic bug preventing file deletions in RocksDB engine. --- arangod/RocksDBEngine/RocksDBReplicationManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arangod/RocksDBEngine/RocksDBReplicationManager.cpp b/arangod/RocksDBEngine/RocksDBReplicationManager.cpp index 881e6671e7..5a8a448198 100644 --- a/arangod/RocksDBEngine/RocksDBReplicationManager.cpp +++ b/arangod/RocksDBEngine/RocksDBReplicationManager.cpp @@ -285,6 +285,8 @@ bool RocksDBReplicationManager::garbageCollect(bool force) { MUTEX_LOCKER(mutexLocker, _lock); + auto oldSize = _contexts.size(); + for (auto it = _contexts.begin(); it != _contexts.end(); /* no hoisting */) { auto context = it->second; @@ -318,7 +320,7 @@ bool RocksDBReplicationManager::garbageCollect(bool force) { // FIXME effectively force should only be called on shutdown // nevertheless this is quite ugly - if (_contexts.size() == 0 && !force) { + if ((oldSize > 0) && (_contexts.size() == 0) && !force) { enableFileDeletions(); } } catch (...) { @@ -341,7 +343,7 @@ void RocksDBReplicationManager::disableFileDeletions() { void RocksDBReplicationManager::enableFileDeletions() { auto rocks = globalRocksDB(); - auto s = rocks->DisableFileDeletions(); + auto s = rocks->EnableFileDeletions(false); TRI_ASSERT(s.ok()); }