summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-09-09 10:32:26 +0200
committerJürg Billeter <j@bitron.ch>2019-09-19 17:31:29 +0200
commit6bac764cbe87924636dbf58d46e5c2c692250de5 (patch)
tree6abead963b4cd6c38a252fa498064815c2812722
parent62bda1013ec54e3f5bdcad5f8728b555de687c3f (diff)
downloadbuildstream-6bac764cbe87924636dbf58d46e5c2c692250de5.tar.gz
cascache.py: Use casd in remote_missing_blobs()
Remote CAS servers should not be contacted directly.
-rw-r--r--src/buildstream/_cas/cascache.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py
index d82588b3a..2603b13c5 100644
--- a/src/buildstream/_cas/cascache.py
+++ b/src/buildstream/_cas/cascache.py
@@ -511,16 +511,25 @@ class CASCache():
# Returns: List of missing Digest objects
#
def remote_missing_blobs(self, remote, blobs):
+ cas = self._get_cas()
+ instance_name = remote.local_cas_instance_name
+
missing_blobs = dict()
# Limit size of FindMissingBlobs request
for required_blobs_group in _grouper(iter(blobs), 512):
- request = remote_execution_pb2.FindMissingBlobsRequest(instance_name=remote.spec.instance_name)
+ request = remote_execution_pb2.FindMissingBlobsRequest(instance_name=instance_name)
for required_digest in required_blobs_group:
d = request.blob_digests.add()
d.CopyFrom(required_digest)
- response = remote.cas.FindMissingBlobs(request)
+ try:
+ response = cas.FindMissingBlobs(request)
+ except grpc.RpcError as e:
+ if e.code() == grpc.StatusCode.INVALID_ARGUMENT and e.details().startswith("Invalid instance name"):
+ raise CASCacheError("Unsupported buildbox-casd version: FindMissingBlobs failed") from e
+ raise
+
for missing_digest in response.missing_blob_digests:
d = remote_execution_pb2.Digest()
d.CopyFrom(missing_digest)