diff options
Diffstat (limited to 'src/buildtool/execution_api')
4 files changed, 19 insertions, 9 deletions
diff --git a/src/buildtool/execution_api/execution_service/TARGETS b/src/buildtool/execution_api/execution_service/TARGETS index ecdccf04..f52efc26 100644 --- a/src/buildtool/execution_api/execution_service/TARGETS +++ b/src/buildtool/execution_api/execution_service/TARGETS @@ -23,6 +23,7 @@ , "operation_cache" , ["src/utils/cpp", "verify_hash"] , ["src/buildtool/execution_api/local", "local"] + , ["src/buildtool/common", "common"] ] , "private-ldflags": ["-pthread", "-Wl,--whole-archive,-lpthread,--no-whole-archive"] @@ -43,7 +44,10 @@ , ["src/buildtool/storage", "config"] ] , "private-deps": - [["src/buildtool/logging", "log_level"], ["src/utils/cpp", "verify_hash"]] + [ ["src/buildtool/logging", "log_level"] + , ["src/utils/cpp", "verify_hash"] + , ["src/buildtool/common", "common"] + ] } , "cas_server": { "type": ["@", "rules", "CC", "library"] diff --git a/src/buildtool/execution_api/execution_service/ac_server.cpp b/src/buildtool/execution_api/execution_service/ac_server.cpp index 0d85596e..cc59a983 100644 --- a/src/buildtool/execution_api/execution_service/ac_server.cpp +++ b/src/buildtool/execution_api/execution_service/ac_server.cpp @@ -15,6 +15,7 @@ #include "src/buildtool/execution_api/execution_service/ac_server.hpp" #include "fmt/core.h" +#include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/storage/garbage_collector.hpp" #include "src/utils/cpp/verify_hash.hpp" @@ -36,11 +37,12 @@ auto ActionCacheServiceImpl::GetActionResult( logger_.Emit(LogLevel::Error, str); return grpc::Status{grpc::StatusCode::INTERNAL, str}; } - auto x = storage_.ActionCache().CachedResult(request->action_digest()); + + ArtifactDigest const a_digest{request->action_digest()}; + auto x = storage_.ActionCache().CachedResult(a_digest); if (not x) { - return grpc::Status{ - grpc::StatusCode::NOT_FOUND, - fmt::format("{} missing from AC", request->action_digest().hash())}; + return grpc::Status{grpc::StatusCode::NOT_FOUND, + fmt::format("{} missing from AC", a_digest.hash())}; } *response = *x; return ::grpc::Status::OK; diff --git a/src/buildtool/execution_api/execution_service/execution_server.cpp b/src/buildtool/execution_api/execution_service/execution_server.cpp index b862a03d..c89f06fe 100644 --- a/src/buildtool/execution_api/execution_service/execution_server.cpp +++ b/src/buildtool/execution_api/execution_service/execution_server.cpp @@ -19,8 +19,8 @@ #include <string> #include <utility> -#include "execution_server.hpp" #include "fmt/core.h" +#include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/execution_api/execution_service/operation_cache.hpp" #include "src/buildtool/execution_api/local/local_cas_reader.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" @@ -212,8 +212,9 @@ auto ExecutionServiceImpl::Execute( // Store the result in action cache if (i_execution_response->ExitCode() == 0 and not action->do_not_cache()) { + ArtifactDigest const a_digest{request->action_digest()}; if (not storage_.ActionCache().StoreResult( - request->action_digest(), execute_response->result())) { + a_digest, execute_response->result())) { auto const str = fmt::format("Could not store action result for action {}", request->action_digest().hash()); diff --git a/src/buildtool/execution_api/local/local_action.cpp b/src/buildtool/execution_api/local/local_action.cpp index 8cc1d242..ad106c6f 100644 --- a/src/buildtool/execution_api/local/local_action.cpp +++ b/src/buildtool/execution_api/local/local_action.cpp @@ -21,6 +21,7 @@ #include <system_error> #include <utility> +#include "src/buildtool/common/artifact_digest.hpp" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/compatibility/native_support.hpp" #include "src/buildtool/execution_api/common/tree_reader.hpp" @@ -104,8 +105,9 @@ auto LocalAction::Execute(Logger const* logger) noexcept } if (do_cache) { + ArtifactDigest const a_digest{*action}; if (auto result = - local_context_.storage->ActionCache().CachedResult(*action)) { + local_context_.storage->ActionCache().CachedResult(a_digest)) { if (result->exit_code() == 0 and ActionResultContainsExpectedOutputs( *result, output_files_, output_dirs_)) { @@ -190,8 +192,9 @@ auto LocalAction::Run(bazel_re::Digest const& action_id) const noexcept if (CollectAndStoreOutputs(&result.action, build_root / cwd_)) { if (cache_flag_ == CacheFlag::CacheOutput) { + ArtifactDigest const a_digest{action_id}; if (not local_context_.storage->ActionCache().StoreResult( - action_id, result.action)) { + a_digest, result.action)) { logger_.Emit(LogLevel::Warning, "failed to store action results"); } |