diff --git a/src/StorageCache.cpp b/src/StorageCache.cpp index e33c97ff7..98c797c71 100644 --- a/src/StorageCache.cpp +++ b/src/StorageCache.cpp @@ -130,9 +130,10 @@ void StorageCache::retrieve(sds key, IStorage::callbackSingle fn) const size_t StorageCache::count() const { - std::unique_lock ul(m_lock); + std::unique_lock ul(m_lock, std::defer_lock); + bool fLocked = ul.try_lock(); size_t count = m_spstorage->count(); - if (m_pdict != nullptr) { + if (m_pdict != nullptr && fLocked) { serverAssert(bulkInsertsInProgress.load(std::memory_order_seq_cst) || count == (dictSize(m_pdict) + m_collisionCount)); } return count; @@ -140,6 +141,5 @@ size_t StorageCache::count() const void StorageCache::beginWriteBatch() { serverAssert(GlobalLocksAcquired()); // Otherwise we deadlock - m_lock.lock(); m_spstorage->beginWriteBatch(); } \ No newline at end of file