From 1e32efa945bb8f0f9aeca2ce2c9f0876f64c1db9 Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Fri, 11 Mar 2022 16:04:22 +0100 Subject: Fix race condition that could cause loss of added items --- zenstore/compactcas.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'zenstore/compactcas.cpp') diff --git a/zenstore/compactcas.cpp b/zenstore/compactcas.cpp index a2142b497..a2806a7fe 100644 --- a/zenstore/compactcas.cpp +++ b/zenstore/compactcas.cpp @@ -59,8 +59,10 @@ CasContainerStrategy::Initialize(const std::string_view ContainerBaseName, uint6 CasStore::InsertResult CasContainerStrategy::InsertChunk(const void* ChunkData, size_t ChunkSize, const IoHash& ChunkHash) { + RwLock::ExclusiveLockScope _i(m_InsertLock); + { - RwLock::SharedLockScope _(m_LocationMapLock); + RwLock::SharedLockScope _l(m_LocationMapLock); auto KeyIt = m_LocationMap.find(ChunkHash); if (KeyIt != m_LocationMap.end()) @@ -71,8 +73,6 @@ CasContainerStrategy::InsertChunk(const void* ChunkData, size_t ChunkSize, const // New entry - RwLock::ExclusiveLockScope _(m_InsertLock); - const uint64_t InsertOffset = m_CurrentInsertOffset; m_SmallObjectFile.Write(ChunkData, ChunkSize, InsertOffset); -- cgit v1.2.3