Fix deadlock in storage cache
Former-commit-id: e74711e8131cd29a1e0294fbb28e1737ee98afce
This commit is contained in:
parent
df19692fd8
commit
bdc29a935e
@ -130,9 +130,10 @@ void StorageCache::retrieve(sds key, IStorage::callbackSingle fn) const
|
||||
|
||||
size_t StorageCache::count() const
|
||||
{
|
||||
std::unique_lock<fastlock> ul(m_lock);
|
||||
std::unique_lock<fastlock> 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();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user