diff options
| author | Dan Engelbrecht <[email protected]> | 2026-01-28 10:32:02 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-01-28 10:32:02 +0100 |
| commit | 03c23e9ce6a6ba6138e10a48e810f251d53ca9f4 (patch) | |
| tree | 48d07f32930e0ef65963e48e65bbd0e6dfbeda67 /src/zenremotestore | |
| parent | 5.7.19-pre1 (diff) | |
| download | zen-03c23e9ce6a6ba6138e10a48e810f251d53ca9f4.tar.xz zen-03c23e9ce6a6ba6138e10a48e810f251d53ca9f4.zip | |
Avoid conversion from JSon to compact binary when querying for builds to avoid integer vs float conversion issues (#735)
Diffstat (limited to 'src/zenremotestore')
5 files changed, 11 insertions, 13 deletions
diff --git a/src/zenremotestore/builds/filebuildstorage.cpp b/src/zenremotestore/builds/filebuildstorage.cpp index 1474fd819..55e69de61 100644 --- a/src/zenremotestore/builds/filebuildstorage.cpp +++ b/src/zenremotestore/builds/filebuildstorage.cpp @@ -61,13 +61,12 @@ public: return Writer.Save(); } - virtual CbObject ListBuilds(CbObject Query) override + virtual CbObject ListBuilds(std::string_view JsonQuery) override { ZEN_TRACE_CPU("FileBuildStorage::ListBuilds"); - ZEN_UNUSED(Query); uint64_t ReceivedBytes = 0; - uint64_t SentBytes = Query.GetSize(); + uint64_t SentBytes = JsonQuery.size(); SimulateLatency(SentBytes, 0); auto _ = MakeGuard([&]() { SimulateLatency(0, ReceivedBytes); }); diff --git a/src/zenremotestore/builds/jupiterbuildstorage.cpp b/src/zenremotestore/builds/jupiterbuildstorage.cpp index 962ffaaed..23d0ddd4c 100644 --- a/src/zenremotestore/builds/jupiterbuildstorage.cpp +++ b/src/zenremotestore/builds/jupiterbuildstorage.cpp @@ -104,15 +104,13 @@ public: return Response.Save(); } - virtual CbObject ListBuilds(CbObject Query) override + virtual CbObject ListBuilds(std::string_view JsonQuery) override { ZEN_TRACE_CPU("Jupiter::ListBuilds"); - Stopwatch ExecutionTimer; - auto _ = MakeGuard([&]() { m_Stats.TotalExecutionTimeUs += ExecutionTimer.GetElapsedTimeUs(); }); - IoBuffer Payload = Query.GetBuffer().AsIoBuffer(); - Payload.SetContentType(ZenContentType::kCbObject); - JupiterResult ListResult = m_Session.ListBuilds(m_Namespace, m_Bucket, Payload); + Stopwatch ExecutionTimer; + auto _ = MakeGuard([&]() { m_Stats.TotalExecutionTimeUs += ExecutionTimer.GetElapsedTimeUs(); }); + JupiterResult ListResult = m_Session.ListBuilds(m_Namespace, m_Bucket, JsonQuery); AddStatistic(ListResult); if (!ListResult.Success) { diff --git a/src/zenremotestore/include/zenremotestore/builds/buildstorage.h b/src/zenremotestore/include/zenremotestore/builds/buildstorage.h index 4b7e54d85..85dabc59f 100644 --- a/src/zenremotestore/include/zenremotestore/builds/buildstorage.h +++ b/src/zenremotestore/include/zenremotestore/builds/buildstorage.h @@ -34,7 +34,7 @@ public: virtual ~BuildStorageBase() {} virtual CbObject ListNamespaces(bool bRecursive = false) = 0; - virtual CbObject ListBuilds(CbObject Query) = 0; + virtual CbObject ListBuilds(std::string_view JsonQuery) = 0; virtual CbObject PutBuild(const Oid& BuildId, const CbObject& MetaData) = 0; virtual CbObject GetBuild(const Oid& BuildId) = 0; virtual void FinalizeBuild(const Oid& BuildId) = 0; diff --git a/src/zenremotestore/include/zenremotestore/jupiter/jupitersession.h b/src/zenremotestore/include/zenremotestore/jupiter/jupitersession.h index 15077376c..eaf6962fd 100644 --- a/src/zenremotestore/include/zenremotestore/jupiter/jupitersession.h +++ b/src/zenremotestore/include/zenremotestore/jupiter/jupitersession.h @@ -110,7 +110,7 @@ public: JupiterResult ListBuildNamespaces(); JupiterResult ListBuildBuckets(std::string_view Namespace); - JupiterResult ListBuilds(std::string_view Namespace, std::string_view BucketId, const IoBuffer& Payload); + JupiterResult ListBuilds(std::string_view Namespace, std::string_view BucketId, std::string_view JsonQuery); JupiterResult PutBuild(std::string_view Namespace, std::string_view BucketId, const Oid& BuildId, const IoBuffer& Payload); JupiterResult GetBuild(std::string_view Namespace, std::string_view BucketId, const Oid& BuildId); JupiterResult FinalizeBuild(std::string_view Namespace, std::string_view BucketId, const Oid& BuildId); diff --git a/src/zenremotestore/jupiter/jupitersession.cpp b/src/zenremotestore/jupiter/jupitersession.cpp index dd0e5ad1f..1bc6564ce 100644 --- a/src/zenremotestore/jupiter/jupitersession.cpp +++ b/src/zenremotestore/jupiter/jupitersession.cpp @@ -430,9 +430,10 @@ JupiterSession::ListBuildBuckets(std::string_view Namespace) } JupiterResult -JupiterSession::ListBuilds(std::string_view Namespace, std::string_view BucketId, const IoBuffer& Payload) +JupiterSession::ListBuilds(std::string_view Namespace, std::string_view BucketId, std::string_view JsonQuery) { - ZEN_ASSERT(Payload.GetContentType() == ZenContentType::kCbObject); + IoBuffer Payload(IoBuffer::Wrap, JsonQuery.data(), JsonQuery.size()); + Payload.SetContentType(ZenContentType::kJSON); std::string OptionalBucketPath = BucketId.empty() ? "" : fmt::format("/{}", BucketId); HttpClient::Response Response = m_HttpClient.Post(fmt::format("/api/v2/builds/{}{}/search", Namespace, OptionalBucketPath), Payload, |