diff options
| author | Dan Engelbrecht <[email protected]> | 2025-06-19 19:20:19 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-06-19 19:20:19 +0200 |
| commit | fe4cac6a733706e6b523e9ec3e9d014571723f72 (patch) | |
| tree | 86ef5c02c61d51b475b1cc00ba8be2591c664032 /src/zenutil | |
| parent | 5.6.13 (diff) | |
| download | zen-fe4cac6a733706e6b523e9ec3e9d014571723f72.tar.xz zen-fe4cac6a733706e6b523e9ec3e9d014571723f72.zip | |
add retry for failed block metadata upload (#445)
* add retry for failed block metadata upload
Diffstat (limited to 'src/zenutil')
| -rw-r--r-- | src/zenutil/filebuildstorage.cpp | 3 | ||||
| -rw-r--r-- | src/zenutil/include/zenutil/buildstorage.h | 6 | ||||
| -rw-r--r-- | src/zenutil/jupiter/jupiterbuildstorage.cpp | 7 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/zenutil/filebuildstorage.cpp b/src/zenutil/filebuildstorage.cpp index c389d16c5..c2cc5ab3c 100644 --- a/src/zenutil/filebuildstorage.cpp +++ b/src/zenutil/filebuildstorage.cpp @@ -450,7 +450,7 @@ public: return {}; } - virtual void PutBlockMetadata(const Oid& BuildId, const IoHash& BlockRawHash, const CbObject& MetaData) override + virtual bool PutBlockMetadata(const Oid& BuildId, const IoHash& BlockRawHash, const CbObject& MetaData) override { ZEN_TRACE_CPU("FileBuildStorage::PutBlockMetadata"); ZEN_UNUSED(BuildId); @@ -467,6 +467,7 @@ public: m_Stats.TotalBytesWritten += MetaData.GetSize(); WriteAsJson(BlockMetaDataPath, MetaData); SimulateLatency(0, 0); + return true; } virtual CbObject FindBlocks(const Oid& BuildId, uint64_t MaxBlockCount) override diff --git a/src/zenutil/include/zenutil/buildstorage.h b/src/zenutil/include/zenutil/buildstorage.h index 5422c837c..03496f0f9 100644 --- a/src/zenutil/include/zenutil/buildstorage.h +++ b/src/zenutil/include/zenutil/buildstorage.h @@ -55,9 +55,9 @@ public: std::function<void(uint64_t Offset, const IoBuffer& Chunk)>&& OnReceive, std::function<void()>&& OnComplete) = 0; - virtual void PutBlockMetadata(const Oid& BuildId, const IoHash& BlockRawHash, const CbObject& MetaData) = 0; - virtual CbObject FindBlocks(const Oid& BuildId, uint64_t MaxBlockCount) = 0; - virtual CbObject GetBlockMetadatas(const Oid& BuildId, std::span<const IoHash> BlockHashes) = 0; + virtual [[nodiscard]] bool PutBlockMetadata(const Oid& BuildId, const IoHash& BlockRawHash, const CbObject& MetaData) = 0; + virtual CbObject FindBlocks(const Oid& BuildId, uint64_t MaxBlockCount) = 0; + virtual CbObject GetBlockMetadatas(const Oid& BuildId, std::span<const IoHash> BlockHashes) = 0; virtual void PutBuildPartStats(const Oid& BuildId, const Oid& BuildPartId, const tsl::robin_map<std::string, double>& FloatStats) = 0; }; diff --git a/src/zenutil/jupiter/jupiterbuildstorage.cpp b/src/zenutil/jupiter/jupiterbuildstorage.cpp index 53cad78da..9974725ff 100644 --- a/src/zenutil/jupiter/jupiterbuildstorage.cpp +++ b/src/zenutil/jupiter/jupiterbuildstorage.cpp @@ -334,7 +334,7 @@ public: return WorkList; } - virtual void PutBlockMetadata(const Oid& BuildId, const IoHash& BlockRawHash, const CbObject& MetaData) override + virtual bool PutBlockMetadata(const Oid& BuildId, const IoHash& BlockRawHash, const CbObject& MetaData) override { ZEN_TRACE_CPU("Jupiter::PutBlockMetadata"); @@ -346,9 +346,14 @@ public: AddStatistic(PutMetaResult); if (!PutMetaResult.Success) { + if (PutMetaResult.ErrorCode == int32_t(HttpResponseCode::NotFound)) + { + return false; + } throw std::runtime_error( fmt::format("Failed putting build block metadata: {} ({})", PutMetaResult.Reason, PutMetaResult.ErrorCode)); } + return true; } virtual CbObject FindBlocks(const Oid& BuildId, uint64_t MaxBlockCount) override |