summaryrefslogtreecommitdiff
path: root/src/buildstream/_elementsourcescache.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/_elementsourcescache.py')
-rw-r--r--src/buildstream/_elementsourcescache.py11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/buildstream/_elementsourcescache.py b/src/buildstream/_elementsourcescache.py
index 84e7633e5..194f3fd4a 100644
--- a/src/buildstream/_elementsourcescache.py
+++ b/src/buildstream/_elementsourcescache.py
@@ -295,18 +295,11 @@ class ElementSourcesCache(AssetCache):
# blobs not existing on the server.
#
def _pull_source_storage(self, key, source_digest, remote):
- def __pull_digest(digest):
- self.cas._fetch_directory(remote, digest)
- required_blobs = self.cas.required_blobs_for_directory(digest)
- missing_blobs = self.cas.local_missing_blobs(required_blobs)
- if missing_blobs:
- self.cas.fetch_blobs(remote, missing_blobs)
-
try:
# Fetch and parse source proto
self.cas.fetch_blobs(remote, [source_digest])
source = source_pb2.Source()
- with open(self.cas.objpath(source_digest), "rb") as f:
+ with self.cas.open(source_digest, "rb") as f:
source.ParseFromString(f.read())
# Write the source proto to cache
@@ -314,7 +307,7 @@ class ElementSourcesCache(AssetCache):
with utils.save_file_atomic(source_path, mode="wb") as f:
f.write(source.SerializeToString())
- __pull_digest(source.files)
+ self.cas._fetch_directory(remote, source.files)
except grpc.RpcError as e:
if e.code() != grpc.StatusCode.NOT_FOUND:
raise SourceCacheError("Failed to pull source with status {}: {}".format(e.code().name, e.details()))