diff options
author | Jürg Billeter <j@bitron.ch> | 2019-10-17 09:10:49 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2019-10-24 18:09:23 +0200 |
commit | c36382f15fde4908ef514a171d7a974015049b8b (patch) | |
tree | 6a27d5d446a5d9ee5e99a930f64ea64aaab18730 | |
parent | c5c29c99662d1bc667bcbd41c6d2f288b6c0e57d (diff) | |
download | buildstream-c36382f15fde4908ef514a171d7a974015049b8b.tar.gz |
cascache.py: Defer attempt to connect to casd until socket file exists
gRPC delays reconnect attempts by at least a second. We don't want to
wait that long. Wait for socket file to appear to avoid the need for
multiple connect attempts.
-rw-r--r-- | src/buildstream/_cas/cascache.py | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py index eb28e2df2..4ee575d05 100644 --- a/src/buildstream/_cas/cascache.py +++ b/src/buildstream/_cas/cascache.py @@ -140,25 +140,21 @@ class CASCache(): assert self._casd_process, "CASCache was instantiated without buildbox-casd" if not self._casd_channel: + while not os.path.exists(self._casd_socket_path): + # casd is not ready yet, try again after a 10ms delay, + # but don't wait for more than 15s + if time.time() > self._casd_start_time + 15: + raise CASCacheError("Timed out waiting for buildbox-casd to become ready") + + time.sleep(0.01) + self._casd_channel = grpc.insecure_channel('unix:' + self._casd_socket_path) self._casd_cas = remote_execution_pb2_grpc.ContentAddressableStorageStub(self._casd_channel) self._local_cas = local_cas_pb2_grpc.LocalContentAddressableStorageStub(self._casd_channel) # Call GetCapabilities() to establish connection to casd capabilities = remote_execution_pb2_grpc.CapabilitiesStub(self._casd_channel) - while True: - try: - capabilities.GetCapabilities(remote_execution_pb2.GetCapabilitiesRequest()) - break - except grpc.RpcError as e: - if e.code() == grpc.StatusCode.UNAVAILABLE: - # casd is not ready yet, try again after a 10ms delay, - # but don't wait for more than 15s - if time.time() < self._casd_start_time + 15: - time.sleep(1 / 100) - continue - - raise + capabilities.GetCapabilities(remote_execution_pb2.GetCapabilitiesRequest()) # _get_cas(): # |