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:

Reply via email to