This is an automated email from the ASF dual-hosted git repository. abderrahim pushed a commit to branch abderrahim/pull-push-hang in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit f7d3bc9e08c53df887083c7a0bf31a73a234cb93 Author: Abderrahim Kitouni <[email protected]> AuthorDate: Mon Aug 3 16:00:03 2026 +0100 casremote: avoid blocking calls to {Fetch,Upload}MissingBlobs --- src/buildstream/_cas/casremote.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/buildstream/_cas/casremote.py b/src/buildstream/_cas/casremote.py index 3fefb9d47..af03920f8 100644 --- a/src/buildstream/_cas/casremote.py +++ b/src/buildstream/_cas/casremote.py @@ -12,6 +12,8 @@ # limitations under the License. # +import time + from .._protos.google.rpc import code_pb2 from .._protos.build.buildgrid import local_cas_pb2 @@ -92,7 +94,16 @@ class _CASBatchRead: local_cas = self._remote.casd.get_local_cas() for request in self._requests: - batch_response = local_cas.FetchMissingBlobs(request) + batch_response_future = local_cas.FetchMissingBlobs.future(request) + + try: + while batch_response_future.running(): + time.sleep(1) + except: + batch_response_future.cancel() + raise + + batch_response = batch_response_future.result() for response in batch_response.responses: if response.status.code == code_pb2.NOT_FOUND: @@ -146,7 +157,16 @@ class _CASBatchUpdate: local_cas = self._remote.casd.get_local_cas() for request in self._requests: - batch_response = local_cas.UploadMissingBlobs(request) + batch_response_future = local_cas.UploadMissingBlobs.future(request) + + try: + while batch_response_future.running(): + time.sleep(1) + except: + batch_response_future.cancel() + raise + + batch_response = batch_response_future.result() for response in batch_response.responses: if response.status.code != code_pb2.OK:
