aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/jupiter/jupiterbuildstorage.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-04-11 19:22:21 +0200
committerGitHub Enterprise <[email protected]>2025-04-11 19:22:21 +0200
commitdec3f27c488a1dda8a2f1133361e2fda9315e0d2 (patch)
tree0aec5d833245bb5d65a84a65a1e4deda3241d222 /src/zenutil/jupiter/jupiterbuildstorage.cpp
parentxmake updatefrontend (diff)
downloadzen-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.cpp20
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)