You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by gi...@apache.org on 2020/12/29 13:02:42 UTC

[buildstream] 01/01: Handle grpc.StatusCode.UNAVAILABLE in first request in case connect() fails

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch valentindavid/handle_grpc_unavailable
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 8610a8a4de3480c4fb1fbb657b37b475da8174ec
Author: Valentin David <va...@codethink.co.uk>
AuthorDate: Thu Dec 6 10:28:08 2018 +0100

    Handle grpc.StatusCode.UNAVAILABLE in first request in case connect() fails
    
    This should allow retrying. CAS cache server seems to not accept
    connections in time.
---
 buildstream/_artifactcache/cascache.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/buildstream/_artifactcache/cascache.py b/buildstream/_artifactcache/cascache.py
index 9ca757d..ac7c5fb 100644
--- a/buildstream/_artifactcache/cascache.py
+++ b/buildstream/_artifactcache/cascache.py
@@ -1199,8 +1199,12 @@ class CASRemote():
                 if 0 < server_max_batch_total_size_bytes < self.max_batch_total_size_bytes:
                     self.max_batch_total_size_bytes = server_max_batch_total_size_bytes
             except grpc.RpcError as e:
-                # Simply use the defaults for servers that don't implement GetCapabilities()
-                if e.code() != grpc.StatusCode.UNIMPLEMENTED:
+                if e.code() == grpc.StatusCode.UNIMPLEMENTED:
+                    # Simply use the defaults for servers that don't implement GetCapabilities()
+                    pass
+                elif e.code() == grpc.StatusCode.UNAVAILABLE:
+                    raise CASError("Failed to connect to CAS service: {}".format(e.details())) from e
+                else:
                     raise
 
             # Check whether the server supports BatchReadBlobs()