diff options
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp | 3 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_network.cpp | 6 |
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) { |