summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api')
-rw-r--r--src/buildtool/execution_api/execution_service/TARGETS1
-rw-r--r--src/buildtool/execution_api/execution_service/cas_utils.cpp45
2 files changed, 28 insertions, 18 deletions
diff --git a/src/buildtool/execution_api/execution_service/TARGETS b/src/buildtool/execution_api/execution_service/TARGETS
index bf5c10d7..fb88cb05 100644
--- a/src/buildtool/execution_api/execution_service/TARGETS
+++ b/src/buildtool/execution_api/execution_service/TARGETS
@@ -175,7 +175,6 @@
]
, "private-deps":
[ ["@", "fmt", "", "fmt"]
- , ["src/buildtool/compatibility", "compatibility"]
, ["src/buildtool/file_system", "file_system_manager"]
]
}
diff --git a/src/buildtool/execution_api/execution_service/cas_utils.cpp b/src/buildtool/execution_api/execution_service/cas_utils.cpp
index e92a2239..3e1f8002 100644
--- a/src/buildtool/execution_api/execution_service/cas_utils.cpp
+++ b/src/buildtool/execution_api/execution_service/cas_utils.cpp
@@ -15,7 +15,6 @@
#include "src/buildtool/execution_api/execution_service/cas_utils.hpp"
#include "fmt/core.h"
-#include "src/buildtool/compatibility/native_support.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
static auto ToGrpc(LargeObjectError&& error) noexcept -> grpc::Status {
@@ -48,13 +47,10 @@ auto CASUtils::EnsureTreeInvariant(bazel_re::Digest const& digest,
auto CASUtils::SplitBlobIdentity(bazel_re::Digest const& blob_digest,
Storage const& storage) noexcept
-> expected<std::vector<bazel_re::Digest>, grpc::Status> {
-
// Check blob existence.
- auto path =
- NativeSupport::IsTree(blob_digest.hash())
- ? storage.CAS().TreePath(static_cast<ArtifactDigest>(blob_digest))
- : storage.CAS().BlobPath(static_cast<ArtifactDigest>(blob_digest),
- false);
+ auto const a_digest = static_cast<ArtifactDigest>(blob_digest);
+ auto path = a_digest.IsTree() ? storage.CAS().TreePath(a_digest)
+ : storage.CAS().BlobPath(a_digest, false);
if (not path) {
return unexpected{
grpc::Status{grpc::StatusCode::NOT_FOUND,
@@ -66,7 +62,7 @@ auto CASUtils::SplitBlobIdentity(bazel_re::Digest const& blob_digest,
// return the identity of a tree, we need to put the tree data in file CAS
// and return the resulting digest.
auto chunk_digests = std::vector<bazel_re::Digest>{};
- if (NativeSupport::IsTree(blob_digest.hash())) {
+ if (a_digest.IsTree()) {
auto tree_data = FileSystemManager::ReadFile(*path);
if (not tree_data) {
return unexpected{grpc::Status{
@@ -91,13 +87,21 @@ auto CASUtils::SplitBlobFastCDC(bazel_re::Digest const& blob_digest,
Storage const& storage) noexcept
-> expected<std::vector<bazel_re::Digest>, grpc::Status> {
// Split blob into chunks:
- auto split = NativeSupport::IsTree(blob_digest.hash())
- ? storage.CAS().SplitTree(blob_digest)
- : storage.CAS().SplitBlob(blob_digest);
+ auto const a_digest = static_cast<ArtifactDigest>(blob_digest);
+ auto split = a_digest.IsTree() ? storage.CAS().SplitTree(a_digest)
+ : storage.CAS().SplitBlob(a_digest);
// Process result:
if (split) {
- return *std::move(split);
+ std::vector<bazel_re::Digest> result;
+ result.reserve(split->size());
+ std::transform(split->begin(),
+ split->end(),
+ std::back_inserter(result),
+ [](ArtifactDigest const& digest) {
+ return static_cast<bazel_re::Digest>(digest);
+ });
+ return result;
}
// Process errors
return unexpected{ToGrpc(std::move(split).error())};
@@ -107,15 +111,22 @@ auto CASUtils::SpliceBlob(bazel_re::Digest const& blob_digest,
std::vector<bazel_re::Digest> const& chunk_digests,
Storage const& storage) noexcept
-> expected<bazel_re::Digest, grpc::Status> {
+ auto const a_digest = static_cast<ArtifactDigest>(blob_digest);
+ std::vector<ArtifactDigest> a_parts;
+ a_parts.reserve(chunk_digests.size());
+ std::transform(chunk_digests.begin(),
+ chunk_digests.end(),
+ std::back_inserter(a_parts),
+ [](auto const& digest) { return ArtifactDigest{digest}; });
+
// Splice blob from chunks:
- auto splice =
- NativeSupport::IsTree(blob_digest.hash())
- ? storage.CAS().SpliceTree(blob_digest, chunk_digests)
- : storage.CAS().SpliceBlob(blob_digest, chunk_digests, false);
+ auto splice = a_digest.IsTree()
+ ? storage.CAS().SpliceTree(a_digest, a_parts)
+ : storage.CAS().SpliceBlob(a_digest, a_parts, false);
// Process result:
if (splice) {
- return *std::move(splice);
+ return static_cast<bazel_re::Digest>(*splice);
}
return unexpected{ToGrpc(std::move(splice).error())};
}