aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/buildstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenstore/buildstore')
-rw-r--r--src/zenstore/buildstore/buildstore.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/zenstore/buildstore/buildstore.cpp b/src/zenstore/buildstore/buildstore.cpp
index 04a0781d3..dff1c3c61 100644
--- a/src/zenstore/buildstore/buildstore.cpp
+++ b/src/zenstore/buildstore/buildstore.cpp
@@ -266,13 +266,12 @@ BuildStore::PutBlob(const IoHash& BlobHash, const IoBuffer& Payload)
m_BlobLookup.insert({BlobHash, NewBlobIndex});
}
- m_LastAccessTimeUpdateCount++;
if (m_TrackedBlobKeys)
{
m_TrackedBlobKeys->push_back(BlobHash);
if (MetadataHash != IoHash::Zero)
{
- m_TrackedBlobKeys->push_back(BlobHash);
+ m_TrackedBlobKeys->push_back(MetadataHash);
}
}
}
@@ -374,8 +373,8 @@ BuildStore::PutMetadatas(std::span<const IoHash> BlobHashes, std::span<const IoB
CompressedMetadataBuffers.resize(Metadatas.size());
if (OptionalWorkerPool)
{
- std::atomic<bool> AbortFlag;
- std::atomic<bool> PauseFlag;
+ std::atomic<bool> AbortFlag{false};
+ std::atomic<bool> PauseFlag{false};
ParallelWork Work(AbortFlag, PauseFlag, WorkerThreadPool::EMode::DisableBacklog);
for (size_t Index = 0; Index < Metadatas.size(); Index++)
{
@@ -506,8 +505,8 @@ BuildStore::GetMetadatas(std::span<const IoHash> BlobHashes, WorkerThreadPool* O
else
{
ZEN_WARN("Metadata {} for blob {} is malformed (not a compressed binary format)",
- MetadataHashes[ResultIndex],
- BlobHashes[ResultIndex]);
+ MetadataHashes[Index],
+ BlobHashes[MetaLocationResultIndexes[Index]]);
}
}
}
@@ -562,7 +561,7 @@ BuildStore::GetStorageStats() const
RwLock::SharedLockScope _(m_Lock);
Result.EntryCount = m_BlobLookup.size();
- for (auto LookupIt : m_BlobLookup)
+ for (const auto& LookupIt : m_BlobLookup)
{
const BlobIndex ReadBlobIndex = LookupIt.second;
const BlobEntry& ReadBlobEntry = m_BlobEntries[ReadBlobIndex];
@@ -635,7 +634,7 @@ BuildStore::CompactState()
const size_t MetadataCount = m_MetadataEntries.size();
MetadataEntries.reserve(MetadataCount);
- for (auto LookupIt : m_BlobLookup)
+ for (const auto& LookupIt : m_BlobLookup)
{
const IoHash& BlobHash = LookupIt.first;
const BlobIndex ReadBlobIndex = LookupIt.second;
@@ -956,7 +955,7 @@ BuildStore::WriteAccessTimes(const RwLock::ExclusiveLockScope&, const std::files
std::vector<AccessTimeRecord> AccessRecords;
AccessRecords.reserve(Header.AccessTimeCount);
- for (auto It : m_BlobLookup)
+ for (const auto& It : m_BlobLookup)
{
const IoHash& Key = It.first;
const BlobIndex Index = It.second;
@@ -966,7 +965,7 @@ BuildStore::WriteAccessTimes(const RwLock::ExclusiveLockScope&, const std::files
}
uint64_t RecordsSize = sizeof(AccessTimeRecord) * Header.AccessTimeCount;
TempFile.Write(AccessRecords.data(), RecordsSize, Offset);
- Offset += sizeof(AccessTimesHeader) * Header.AccessTimeCount;
+ Offset += sizeof(AccessTimeRecord) * Header.AccessTimeCount;
}
if (TempFile.MoveTemporaryIntoPlace(AccessTimesPath, Ec); Ec)
{
@@ -1373,6 +1372,8 @@ BuildStore::LockState(GcCtx& Ctx)
#if ZEN_WITH_TESTS
+TEST_SUITE_BEGIN("store.buildstore");
+
TEST_CASE("BuildStore.Blobs")
{
ScopedTemporaryDirectory _;
@@ -1822,6 +1823,8 @@ TEST_CASE("BuildStore.SizeLimit")
}
}
+TEST_SUITE_END();
+
void
buildstore_forcelink()
{