diff options
| author | Dan Engelbrecht <[email protected]> | 2025-04-11 19:22:21 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-04-11 19:22:21 +0200 |
| commit | dec3f27c488a1dda8a2f1133361e2fda9315e0d2 (patch) | |
| tree | 0aec5d833245bb5d65a84a65a1e4deda3241d222 /src/zenutil/jupiter/jupiterbuildstorage.cpp | |
| parent | xmake updatefrontend (diff) | |
| download | zen-dec3f27c488a1dda8a2f1133361e2fda9315e0d2.tar.xz zen-dec3f27c488a1dda8a2f1133361e2fda9315e0d2.zip | |
fix race condition in multipart download (#358)
Diffstat (limited to 'src/zenutil/jupiter/jupiterbuildstorage.cpp')
| -rw-r--r-- | src/zenutil/jupiter/jupiterbuildstorage.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/zenutil/jupiter/jupiterbuildstorage.cpp b/src/zenutil/jupiter/jupiterbuildstorage.cpp index f2d190408..24e062c7b 100644 --- a/src/zenutil/jupiter/jupiterbuildstorage.cpp +++ b/src/zenutil/jupiter/jupiterbuildstorage.cpp @@ -235,19 +235,25 @@ public: return std::move(GetBuildBlobResult.Response); } - virtual std::vector<std::function<void()>> GetLargeBuildBlob( - const Oid& BuildId, - const IoHash& RawHash, - uint64_t ChunkSize, - std::function<void(uint64_t Offset, const IoBuffer& Chunk, uint64_t BytesRemaining)>&& Receiver) override + virtual std::vector<std::function<void()>> GetLargeBuildBlob(const Oid& BuildId, + const IoHash& RawHash, + uint64_t ChunkSize, + std::function<void(uint64_t Offset, const IoBuffer& Chunk)>&& OnReceive, + std::function<void()>&& OnComplete) override { ZEN_TRACE_CPU("Jupiter::GetLargeBuildBlob"); Stopwatch ExecutionTimer; auto _ = MakeGuard([&]() { m_Stats.TotalExecutionTimeUs += ExecutionTimer.GetElapsedTimeUs(); }); std::vector<std::function<JupiterResult()>> WorkItems; - JupiterResult GetMultipartBlobResult = - m_Session.GetMultipartBuildBlob(m_Namespace, m_Bucket, BuildId, RawHash, ChunkSize, std::move(Receiver), WorkItems); + JupiterResult GetMultipartBlobResult = m_Session.GetMultipartBuildBlob(m_Namespace, + m_Bucket, + BuildId, + RawHash, + ChunkSize, + std::move(OnReceive), + std::move(OnComplete), + WorkItems); AddStatistic(GetMultipartBlobResult); if (!GetMultipartBlobResult.Success) |