diff options
Diffstat (limited to 'src/zenstore/cache/structuredcachestore.cpp')
| -rw-r--r-- | src/zenstore/cache/structuredcachestore.cpp | 122 |
1 files changed, 77 insertions, 45 deletions
diff --git a/src/zenstore/cache/structuredcachestore.cpp b/src/zenstore/cache/structuredcachestore.cpp index c0b433c51..f1cf6e4a4 100644 --- a/src/zenstore/cache/structuredcachestore.cpp +++ b/src/zenstore/cache/structuredcachestore.cpp @@ -142,25 +142,32 @@ struct ZenCacheNamespace::PutBatchHandle }; ZenCacheNamespace::PutBatchHandle* -ZenCacheNamespace::BeginPutBatch(std::vector<PutResult>& OutResult) +ZenCacheNamespace::CreatePutBatch(ZenCachePutResultVec_t& OutResult) { ZenCacheNamespace::PutBatchHandle* Handle = new ZenCacheNamespace::PutBatchHandle; - Handle->DiskLayerHandle = m_DiskLayer.BeginPutBatch(OutResult); + Handle->DiskLayerHandle = m_DiskLayer.CreatePutBatch(OutResult); return Handle; } void -ZenCacheNamespace::EndPutBatch(PutBatchHandle* Batch) noexcept +ZenCacheNamespace::CommitPutBatch(PutBatchHandle* Batch) +{ + ZEN_ASSERT(Batch); + m_DiskLayer.CommitPutBatch(Batch->DiskLayerHandle); +} + +void +ZenCacheNamespace::DeletePutBatch(PutBatchHandle* Batch) noexcept { try { ZEN_ASSERT(Batch); - m_DiskLayer.EndPutBatch(Batch->DiskLayerHandle); + m_DiskLayer.DeletePutBatch(Batch->DiskLayerHandle); delete Batch; } catch (const std::exception& Ex) { - ZEN_ERROR("Exception in ZenCacheNamespace::EndPutBatch: '{}'", Ex.what()); + ZEN_ERROR("Exception in ZenCacheNamespace::DeletePutBatch: '{}'", Ex.what()); } } @@ -172,39 +179,46 @@ struct ZenCacheNamespace::GetBatchHandle }; ZenCacheNamespace::GetBatchHandle* -ZenCacheNamespace::BeginGetBatch(ZenCacheValueVec_t& OutResult) +ZenCacheNamespace::CreateGetBatch(ZenCacheValueVec_t& OutResult) { ZenCacheNamespace::GetBatchHandle* Handle = new ZenCacheNamespace::GetBatchHandle(OutResult); - Handle->DiskLayerHandle = m_DiskLayer.BeginGetBatch(OutResult); + Handle->DiskLayerHandle = m_DiskLayer.CreateGetBatch(OutResult); return Handle; } void -ZenCacheNamespace::EndGetBatch(GetBatchHandle* Batch) noexcept +ZenCacheNamespace::CommitGetBatch(GetBatchHandle* Batch) { - try - { - ZEN_ASSERT(Batch); - m_DiskLayer.EndGetBatch(Batch->DiskLayerHandle); + ZEN_ASSERT(Batch); + m_DiskLayer.CommitGetBatch(Batch->DiskLayerHandle); - metrics::RequestStats::Scope StatsScope(m_GetOps, 0); - for (const ZenCacheValue& Result : Batch->Results) + metrics::RequestStats::Scope StatsScope(m_GetOps, 0); + for (const ZenCacheValue& Result : Batch->Results) + { + if (Result.Value) { - if (Result.Value) - { - m_HitCount++; - StatsScope.SetBytes(Result.Value.Size()); - } - else - { - m_MissCount++; - } + m_HitCount++; + StatsScope.SetBytes(Result.Value.Size()); } + else + { + m_MissCount++; + } + } +} + +void +ZenCacheNamespace::DeleteGetBatch(GetBatchHandle* Batch) noexcept +{ + try + { + ZEN_ASSERT(Batch); + m_DiskLayer.DeleteGetBatch(Batch->DiskLayerHandle); delete Batch; } catch (const std::exception& Ex) { - ZEN_ERROR("Exception in ZenCacheNamespace::EndGetBatch: '{}'", Ex.what()); + ZEN_ERROR("Exception in ZenCacheNamespace::DeleteGetBatch: '{}'", Ex.what()); } } @@ -543,13 +557,24 @@ ZenCacheStore::LogWorker() } } -ZenCacheStore::PutBatch::PutBatch(ZenCacheStore& CacheStore, std::string_view InNamespace, std::vector<PutResult>& OutResult) +ZenCacheStore::PutBatch::PutBatch(ZenCacheStore& CacheStore, std::string_view InNamespace, ZenCachePutResultVec_t& OutResult) : m_CacheStore(CacheStore) { ZEN_MEMSCOPE(GetCacheStoreTag()); if (m_Store = m_CacheStore.GetNamespace(InNamespace); m_Store) { - m_NamespaceBatchHandle = m_Store->BeginPutBatch(OutResult); + m_NamespaceBatchHandle = m_Store->CreatePutBatch(OutResult); + } +} + +void +ZenCacheStore::PutBatch::Commit() +{ + if (m_Store) + { + ZEN_MEMSCOPE(GetCacheStoreTag()); + ZEN_ASSERT(m_NamespaceBatchHandle); + m_Store->CommitPutBatch(m_NamespaceBatchHandle); } } @@ -557,12 +582,8 @@ ZenCacheStore::PutBatch::~PutBatch() { try { - if (m_Store) - { - ZEN_MEMSCOPE(GetCacheStoreTag()); - ZEN_ASSERT(m_NamespaceBatchHandle); - m_Store->EndPutBatch(m_NamespaceBatchHandle); - } + ZEN_ASSERT(m_NamespaceBatchHandle); + m_Store->DeletePutBatch(m_NamespaceBatchHandle); } catch (const std::exception& Ex) { @@ -577,7 +598,29 @@ ZenCacheStore::GetBatch::GetBatch(ZenCacheStore& CacheStore, std::string_view In ZEN_MEMSCOPE(GetCacheStoreTag()); if (m_Store = m_CacheStore.GetNamespace(InNamespace); m_Store) { - m_NamespaceBatchHandle = m_Store->BeginGetBatch(OutResult); + m_NamespaceBatchHandle = m_Store->CreateGetBatch(OutResult); + } +} + +void +ZenCacheStore::GetBatch::Commit() +{ + if (m_Store) + { + ZEN_MEMSCOPE(GetCacheStoreTag()); + ZEN_ASSERT(m_NamespaceBatchHandle); + m_Store->CommitGetBatch(m_NamespaceBatchHandle); + + metrics::RequestStats::Scope OpScope(m_CacheStore.m_GetOps, 0); + for (const ZenCacheValue& Result : Results) + { + if (Result.Value) + { + m_CacheStore.m_HitCount++; + OpScope.SetBytes(Result.Value.GetSize()); + } + m_CacheStore.m_MissCount++; + } } } @@ -589,18 +632,7 @@ ZenCacheStore::GetBatch::~GetBatch() { ZEN_MEMSCOPE(GetCacheStoreTag()); ZEN_ASSERT(m_NamespaceBatchHandle); - m_Store->EndGetBatch(m_NamespaceBatchHandle); - - metrics::RequestStats::Scope OpScope(m_CacheStore.m_GetOps, 0); - for (const ZenCacheValue& Result : Results) - { - if (Result.Value) - { - m_CacheStore.m_HitCount++; - OpScope.SetBytes(Result.Value.GetSize()); - } - m_CacheStore.m_MissCount++; - } + m_Store->DeleteGetBatch(m_NamespaceBatchHandle); } } catch (const std::exception& Ex) |