summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-10 15:19:14 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-11 14:52:07 +0200
commit0166e528437bc45216000370fe413ee3e08c9d50 (patch)
treec79a84207f23ea88572ea8dfe43b3b8f450dd6ca /src
parent4249d4758cb50238d24e5631af50b0e363e9e789 (diff)
downloadjustbuild-0166e528437bc45216000370fe413ee3e08c9d50.tar.gz
Use ArtifactDigestFactory in TargetService
...to create ArtifactDigests.
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/serve_api/serve_service/TARGETS1
-rw-r--r--src/buildtool/serve_api/serve_service/target.cpp18
2 files changed, 15 insertions, 4 deletions
diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS
index ed67bcdf..6135cd5a 100644
--- a/src/buildtool/serve_api/serve_service/TARGETS
+++ b/src/buildtool/serve_api/serve_service/TARGETS
@@ -127,6 +127,7 @@
, ["src/buildtool/serve_api/remote", "serve_api"]
, ["src/buildtool/storage", "backend_description"]
, ["src/buildtool/storage", "repository_garbage_collector"]
+ , ["src/buildtool/crypto", "hash_function"]
]
}
, "configuration_service":
diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp
index 5bd94ba2..c3d6baca 100644
--- a/src/buildtool/serve_api/serve_service/target.cpp
+++ b/src/buildtool/serve_api/serve_service/target.cpp
@@ -30,6 +30,7 @@
#include "src/buildtool/common/remote/retry_config.hpp"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/common/statistics.hpp"
+#include "src/buildtool/crypto/hash_function.hpp"
#include "src/buildtool/execution_engine/executor/context.hpp"
#include "src/buildtool/file_system/file_system_manager.hpp"
#include "src/buildtool/file_system/object_type.hpp"
@@ -324,10 +325,19 @@ auto TargetService::ServeTarget(
logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::NOT_FOUND, msg};
}
- ArtifactDigest repo_key_dgst{repo_key->String(), 0, /*is_tree=*/false};
- if (not apis_.local->IsAvailable(repo_key_dgst) and
+ auto const repo_key_dgst =
+ ArtifactDigestFactory::Create(apis_.hash_function.GetType(),
+ repo_key->String(),
+ 0,
+ /*is_tree=*/false);
+ if (not repo_key_dgst) {
+ logger_->Emit(LogLevel::Error, "{}", repo_key_dgst.error());
+ return ::grpc::Status{::grpc::StatusCode::INTERNAL,
+ repo_key_dgst.error()};
+ }
+ if (not apis_.local->IsAvailable(*repo_key_dgst) and
not apis_.remote->RetrieveToCas(
- {Artifact::ObjectInfo{.digest = repo_key_dgst,
+ {Artifact::ObjectInfo{.digest = *repo_key_dgst,
.type = ObjectType::File}},
*apis_.local)) {
auto msg = fmt::format(
@@ -337,7 +347,7 @@ auto TargetService::ServeTarget(
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
auto repo_config_path = local_context_.storage->CAS().BlobPath(
- repo_key_dgst, /*is_executable=*/false);
+ *repo_key_dgst, /*is_executable=*/false);
if (not repo_config_path) {
// This should not fail unless something went really bad...
auto msg = fmt::format(