summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp3
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network.cpp6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
index a2b29d75..8eb26a0c 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
@@ -95,6 +95,9 @@ auto BazelExecutionClient::Execute(std::string const& instance_name,
}
auto contents = ExtractContents(std::move(op));
response = contents.response;
+ if (response.state == ExecutionResponse::State::Ongoing) {
+ return {.ok = true, .exit_retry_loop = true};
+ }
if (response.state == ExecutionResponse::State::Finished) {
return {.ok = true};
}
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp
index 0d53643d..34ebb418 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network.cpp
@@ -131,6 +131,12 @@ auto BazelNetwork::ExecuteBazelActionSync(
auto response =
exec_->Execute(instance_name_, action, exec_config_, true /*wait*/);
+ if (response.state ==
+ BazelExecutionClient::ExecutionResponse::State::Ongoing) {
+ Logger::Log(
+ LogLevel::Trace, "Waiting for {}", response.execution_handle);
+ response = exec_->WaitExecution(response.execution_handle);
+ }
if (response.state !=
BazelExecutionClient::ExecutionResponse::State::Finished or
not response.output) {