summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSascha Roloff <sascha.roloff@huawei.com>2022-12-22 13:10:56 +0100
committerKlaus Aehlig <klaus.aehlig@huawei.com>2023-01-20 13:57:18 +0100
commit0778869e38b420430d854897dbf8022798d3b3d1 (patch)
tree850e7775adaffa319afc7b29b0bb6133bf0cdc37 /src
parent3de79d6f32dba510a94dbea85e74069f56176eba (diff)
downloadjustbuild-0778869e38b420430d854897dbf8022798d3b3d1.tar.gz
Add check for same CAS in CAS-to-CAS artifact retrieval
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/local/local_api.hpp5
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp5
2 files changed, 10 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp
index fb64f6a1..02fa4fa6 100644
--- a/src/buildtool/execution_api/local/local_api.hpp
+++ b/src/buildtool/execution_api/local/local_api.hpp
@@ -133,6 +133,11 @@ class LocalApi final : public IExecutionApi {
std::vector<Artifact::ObjectInfo> const& artifacts_info,
gsl::not_null<IExecutionApi*> const& api) noexcept -> bool final {
+ // Return immediately if target CAS is this CAS
+ if (this == api) {
+ return true;
+ }
+
// Determine missing artifacts in other CAS.
std::vector<ArtifactDigest> digests;
digests.reserve(artifacts_info.size());
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index f1442111..a192737f 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -169,6 +169,11 @@ auto BazelApi::CreateAction(
std::vector<Artifact::ObjectInfo> const& artifacts_info,
gsl::not_null<IExecutionApi*> const& api) noexcept -> bool {
+ // Return immediately if target CAS is this CAS
+ if (this == api) {
+ return true;
+ }
+
// Determine missing artifacts in other CAS.
std::vector<ArtifactDigest> digests;
digests.reserve(artifacts_info.size());