summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/execution_service
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/execution_service')
-rw-r--r--src/buildtool/execution_api/execution_service/execution_server.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/buildtool/execution_api/execution_service/execution_server.cpp b/src/buildtool/execution_api/execution_service/execution_server.cpp
index 3e86ca5d..3d33b704 100644
--- a/src/buildtool/execution_api/execution_service/execution_server.cpp
+++ b/src/buildtool/execution_api/execution_service/execution_server.cpp
@@ -117,18 +117,30 @@ auto ExecutionServiceImpl::Execute(
}
response.set_cached_result(tmp->IsCached());
- if (tmp->HasStdErr()) {
- logger_.Emit(LogLevel::Error, tmp->StdErr());
- }
op.set_done(true);
::google::rpc::Status status{};
*(response.mutable_status()) = status;
- response.mutable_result()->set_exit_code(tmp->ExitCode());
+ auto* result = response.mutable_result();
+ result->set_exit_code(tmp->ExitCode());
if (tmp->HasStdErr()) {
- response.mutable_result()->set_stderr_raw(tmp->StdErr().data());
+ auto dgst = storage_.StoreBlob(tmp->StdErr(), /*is_executable=*/false);
+ if (!dgst) {
+ auto str = fmt::format("Could not store stderr of action {}",
+ request->action_digest().hash());
+ logger_.Emit(LogLevel::Error, str);
+ return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
+ }
+ result->mutable_stderr_digest()->CopyFrom(*dgst);
}
if (tmp->HasStdOut()) {
- response.mutable_result()->set_stdout_raw(tmp->StdOut().data());
+ auto dgst = storage_.StoreBlob(tmp->StdOut(), /*is_executable=*/false);
+ if (!dgst) {
+ auto str = fmt::format("Could not store stdout of action {}",
+ request->action_digest().hash());
+ logger_.Emit(LogLevel::Error, str);
+ return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
+ }
+ result->mutable_stdout_digest()->CopyFrom(*dgst);
}
op.mutable_response()->PackFrom(response);