aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/zen/cmds/projectstore_cmd.cpp2
-rw-r--r--src/zenstore/compactcas.cpp56
-rw-r--r--src/zenstore/filecas.cpp12
3 files changed, 57 insertions, 13 deletions
diff --git a/src/zen/cmds/projectstore_cmd.cpp b/src/zen/cmds/projectstore_cmd.cpp
index c9f787915..db3b07eee 100644
--- a/src/zen/cmds/projectstore_cmd.cpp
+++ b/src/zen/cmds/projectstore_cmd.cpp
@@ -2378,7 +2378,7 @@ OplogDownloadCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** a
Oid BuildId = Oid::TryFromHexString(m_BuildId);
if (BuildId == Oid::Zero)
{
- throw OptionParseException("'--buildid' is malformed", m_Options.help());
+ throw OptionParseException("'--build-id' is malformed", m_Options.help());
}
BuildStorage::Statistics StorageStats;
diff --git a/src/zenstore/compactcas.cpp b/src/zenstore/compactcas.cpp
index b7bfbd188..b534a5c72 100644
--- a/src/zenstore/compactcas.cpp
+++ b/src/zenstore/compactcas.cpp
@@ -368,6 +368,14 @@ CasContainerStrategy::IterateChunks(std::span<const IoHash> ChunkHas
{
IoBuffer Chunk = m_BlockStore.TryGetChunk(FoundChunkLocations[Index]);
size_t OuterIndex = FoundChunkIndexes[Index];
+ if (!Chunk)
+ {
+ ZEN_WARN("Failed to fetch chunk {} from block {}, Offset {}, Size {}",
+ ChunkHashes[OuterIndex],
+ FoundChunkLocations[Index].BlockIndex,
+ FoundChunkLocations[Index].Offset,
+ FoundChunkLocations[Index].Size);
+ }
if (!AsyncCallback(OuterIndex, Chunk))
{
return false;
@@ -376,17 +384,26 @@ CasContainerStrategy::IterateChunks(std::span<const IoHash> ChunkHas
return true;
}
- auto DoOneBlock = [this](const std::function<bool(size_t Index, const IoBuffer& Payload)>& AsyncCallback,
- uint64_t LargeSizeLimit,
- std::span<const size_t> FoundChunkIndexes,
- std::span<const BlockStoreLocation> FoundChunkLocations,
- std::span<const size_t> ChunkIndexes) {
+ auto DoOneBlock = [this, &ChunkHashes](const std::function<bool(size_t Index, const IoBuffer& Payload)>& AsyncCallback,
+ uint64_t LargeSizeLimit,
+ std::span<const size_t> FoundChunkIndexes,
+ std::span<const BlockStoreLocation> FoundChunkLocations,
+ std::span<const size_t> ChunkIndexes) {
if (ChunkIndexes.size() < 4)
{
for (size_t ChunkIndex : ChunkIndexes)
{
- IoBuffer Chunk = m_BlockStore.TryGetChunk(FoundChunkLocations[ChunkIndex]);
- if (!AsyncCallback(FoundChunkIndexes[ChunkIndex], Chunk))
+ size_t OuterIndex = FoundChunkIndexes[ChunkIndex];
+ IoBuffer Chunk = m_BlockStore.TryGetChunk(FoundChunkLocations[ChunkIndex]);
+ if (!Chunk)
+ {
+ ZEN_WARN("Failed to fetch chunk {} from block {}, Offset {}, Size {}",
+ ChunkHashes[OuterIndex],
+ FoundChunkLocations[ChunkIndex].BlockIndex,
+ FoundChunkLocations[ChunkIndex].Offset,
+ FoundChunkLocations[ChunkIndex].Size);
+ }
+ if (!AsyncCallback(OuterIndex, Chunk))
{
return false;
}
@@ -396,15 +413,30 @@ CasContainerStrategy::IterateChunks(std::span<const IoHash> ChunkHas
return m_BlockStore.IterateBlock(
FoundChunkLocations,
ChunkIndexes,
- [AsyncCallback, FoundChunkIndexes](size_t ChunkIndex, const void* Data, uint64_t Size) {
+ [this, &ChunkHashes, AsyncCallback, FoundChunkIndexes](size_t ChunkIndex, const void* Data, uint64_t Size) {
+ size_t OuterIndex = FoundChunkIndexes[ChunkIndex];
if (Data == nullptr)
{
- return AsyncCallback(FoundChunkIndexes[ChunkIndex], IoBuffer());
+ ZEN_WARN("Failed to fetch chunk {}, Size {}", ChunkHashes[OuterIndex], Size);
+ return AsyncCallback(OuterIndex, IoBuffer());
}
- return AsyncCallback(FoundChunkIndexes[ChunkIndex], IoBuffer(IoBuffer::Wrap, Data, Size));
+ return AsyncCallback(OuterIndex, IoBuffer(IoBuffer::Wrap, Data, Size));
},
- [AsyncCallback, FoundChunkIndexes](size_t ChunkIndex, BlockStoreFile& File, uint64_t Offset, uint64_t Size) {
- return AsyncCallback(FoundChunkIndexes[ChunkIndex], File.GetChunk(Offset, Size));
+ [this, &ChunkHashes, AsyncCallback, FoundChunkIndexes](size_t ChunkIndex,
+ BlockStoreFile& File,
+ uint64_t Offset,
+ uint64_t Size) {
+ size_t OuterIndex = FoundChunkIndexes[ChunkIndex];
+ IoBuffer Chunk = File.GetChunk(Offset, Size);
+ if (!Chunk)
+ {
+ ZEN_WARN("Failed to fetch chunk {} from '{}', Offset {}, Size {}",
+ ChunkHashes[OuterIndex],
+ File.GetPath(),
+ Offset,
+ Size);
+ }
+ return AsyncCallback(OuterIndex, Chunk);
},
LargeSizeLimit);
};
diff --git a/src/zenstore/filecas.cpp b/src/zenstore/filecas.cpp
index 365a933c1..103928097 100644
--- a/src/zenstore/filecas.cpp
+++ b/src/zenstore/filecas.cpp
@@ -656,6 +656,12 @@ FileCasStrategy::IterateChunks(std::span<IoHash> ChunkHashes,
ZEN_ASSERT(ChunkIndex < ChunkHashes.size());
const IoHash& ChunkHash = ChunkHashes[ChunkIndex];
IoBuffer Payload = SafeOpenChunk(ChunkHash, ExpectedSize);
+ if (!Payload)
+ {
+ ShardingHelper Name(m_RootDirectory, ChunkHash);
+ const std::filesystem::path ChunkPath = Name.ShardedPath.ToPath();
+ ZEN_WARN("Failed to fetch chunk {} from '{}', Size {}", ChunkHash, ChunkPath, ExpectedSize);
+ }
if (!AsyncCallback(ChunkIndex, std::move(Payload)))
{
return false;
@@ -754,6 +760,12 @@ FileCasStrategy::IterateChunks(std::function<void(const IoHash& Hash, IoBuffer&&
const IoHash& ChunkHash = RawHashes[Index];
const uint64_t ExpectedSize = ExpectedSizes[Index];
IoBuffer Payload = SafeOpenChunk(ChunkHash, ExpectedSize);
+ if (!Payload)
+ {
+ ShardingHelper Name(m_RootDirectory, ChunkHash);
+ const std::filesystem::path ChunkPath = Name.ShardedPath.ToPath();
+ ZEN_WARN("Failed to fetch chunk {} from '{}', Size {}", ChunkHash, ChunkPath, ExpectedSize);
+ }
Callback(ChunkHash, std::move(Payload));
}
}