aboutsummaryrefslogtreecommitdiff
path: root/zenstore/compactcas.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-11-24 13:20:59 +0100
committerGitHub <[email protected]>2022-11-24 04:20:59 -0800
commit666a543ed82896c972526ef08476a41ccbfbd2c4 (patch)
tree49a52941d9ced665431ebf320d0f7d0f4b6e5cfa /zenstore/compactcas.cpp
parentDon't resize block store block file to max size at creation (#193) (diff)
downloadzen-666a543ed82896c972526ef08476a41ccbfbd2c4.tar.xz
zen-666a543ed82896c972526ef08476a41ccbfbd2c4.zip
Fix disk usage stats (#194)
* Improve tracking of used disk space for filecas and compactcas Add tracking of used disk space for project store Remove ZenCacheStore as GcStorage/GcContributor - underlying ZenCacheNamespace instances register themselves directly - removing this also fixes double reporting of GcStorageSize for namespaces * changelog
Diffstat (limited to 'zenstore/compactcas.cpp')
-rw-r--r--zenstore/compactcas.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/zenstore/compactcas.cpp b/zenstore/compactcas.cpp
index 519478356..d0c2f59ac 100644
--- a/zenstore/compactcas.cpp
+++ b/zenstore/compactcas.cpp
@@ -176,7 +176,6 @@ CasContainerStrategy::InsertChunk(const void* ChunkData, size_t ChunkSize, const
m_LocationMap.emplace(ChunkHash, DiskLocation);
}
});
- m_TotalSize.fetch_add(static_cast<uint64_t>(ChunkSize), std::memory_order::relaxed);
return CasStore::InsertResult{.New = true};
}
@@ -484,8 +483,6 @@ CasContainerStrategy::CollectGarbage(GcContext& GcCtx)
if (Entry.Flags & CasDiskIndexEntry::kTombstone)
{
m_LocationMap.erase(Entry.Key);
- uint64_t ChunkSize = Entry.Location.GetSize();
- m_TotalSize.fetch_sub(ChunkSize);
continue;
}
m_LocationMap[Entry.Key] = Entry.Location;
@@ -686,7 +683,6 @@ void
CasContainerStrategy::OpenContainer(bool IsNewStore)
{
// Add .running file and delete on clean on close to detect bad termination
- m_TotalSize = 0;
m_LocationMap.clear();
@@ -710,7 +706,6 @@ CasContainerStrategy::OpenContainer(bool IsNewStore)
for (const auto& Entry : m_LocationMap)
{
const BlockStoreDiskLocation& Location = Entry.second;
- m_TotalSize.fetch_add(Location.GetSize(), std::memory_order::relaxed);
KnownLocations.push_back(Location.Get(m_PayloadAlignment));
}
@@ -991,8 +986,6 @@ TEST_CASE("compactcas.gc.compact")
CHECK(Cas.HaveChunk(ChunkHashes[7]));
CHECK(Cas.HaveChunk(ChunkHashes[8]));
- uint64_t InitialSize = Cas.StorageSize().DiskSize;
-
// Keep first and last
{
GcContext GcCtx;
@@ -1018,15 +1011,15 @@ TEST_CASE("compactcas.gc.compact")
CHECK(ChunkHashes[0] == IoHash::HashBuffer(Cas.FindChunk(ChunkHashes[0])));
CHECK(ChunkHashes[8] == IoHash::HashBuffer(Cas.FindChunk(ChunkHashes[8])));
- }
- Cas.InsertChunk(Chunks[1], ChunkHashes[1]);
- Cas.InsertChunk(Chunks[2], ChunkHashes[2]);
- Cas.InsertChunk(Chunks[3], ChunkHashes[3]);
- Cas.InsertChunk(Chunks[4], ChunkHashes[4]);
- Cas.InsertChunk(Chunks[5], ChunkHashes[5]);
- Cas.InsertChunk(Chunks[6], ChunkHashes[6]);
- Cas.InsertChunk(Chunks[7], ChunkHashes[7]);
+ Cas.InsertChunk(Chunks[1], ChunkHashes[1]);
+ Cas.InsertChunk(Chunks[2], ChunkHashes[2]);
+ Cas.InsertChunk(Chunks[3], ChunkHashes[3]);
+ Cas.InsertChunk(Chunks[4], ChunkHashes[4]);
+ Cas.InsertChunk(Chunks[5], ChunkHashes[5]);
+ Cas.InsertChunk(Chunks[6], ChunkHashes[6]);
+ Cas.InsertChunk(Chunks[7], ChunkHashes[7]);
+ }
// Keep last
{
@@ -1177,9 +1170,6 @@ TEST_CASE("compactcas.gc.compact")
CHECK(ChunkHashes[6] == IoHash::HashBuffer(Cas.FindChunk(ChunkHashes[6])));
CHECK(ChunkHashes[7] == IoHash::HashBuffer(Cas.FindChunk(ChunkHashes[7])));
CHECK(ChunkHashes[8] == IoHash::HashBuffer(Cas.FindChunk(ChunkHashes[8])));
-
- uint64_t FinalSize = Cas.StorageSize().DiskSize;
- CHECK(InitialSize == FinalSize);
}
}
@@ -1346,7 +1336,8 @@ TEST_CASE("compactcas.threadedinsert")
WorkCompleted = 0;
const uint64_t TotalSize = Cas.StorageSize().DiskSize;
- CHECK_EQ(ExpectedSize, TotalSize);
+ CHECK_LE(ExpectedSize, TotalSize);
+ CHECK_GE(ExpectedSize + 32768, TotalSize);
{
for (const auto& Chunk : Chunks)