summaryrefslogtreecommitdiff
path: root/src/buildstream/_cas
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-10-28 08:16:07 +0100
committerJürg Billeter <j@bitron.ch>2020-12-09 14:51:06 +0000
commit0b5155e908388f018060b3b721f22ecf8a9666b9 (patch)
tree0c5ed45112b0f503f8ac9e2cc53333de1b22ca42 /src/buildstream/_cas
parentb480a2a5064330133cdd2ec7e14961d63a40c113 (diff)
downloadbuildstream-0b5155e908388f018060b3b721f22ecf8a9666b9.tar.gz
cascache.py: Also fetch file blobs in _fetch_directory()
This eliminates code duplication in `ArtifactCache`, `SourceCache` and `ElementSourcesCache`.
Diffstat (limited to 'src/buildstream/_cas')
-rw-r--r--src/buildstream/_cas/cascache.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py
index 42e2244c5..d41d6ad71 100644
--- a/src/buildstream/_cas/cascache.py
+++ b/src/buildstream/_cas/cascache.py
@@ -509,8 +509,7 @@ class CASCache:
#
# Fetches remote directory and adds it to content addressable store.
#
- # This recursively fetches directory objects but doesn't fetch any
- # files.
+ # This recursively fetches directory objects and files.
#
# Args:
# remote (Remote): The remote to use.
@@ -536,6 +535,9 @@ class CASCache:
"Failed to fetch directory tree {}: {}: {}".format(dir_digest.hash, e.code().name, e.details())
) from e
+ required_blobs = self.required_blobs_for_directory(dir_digest)
+ self.fetch_blobs(remote, required_blobs)
+
def _fetch_tree(self, remote, digest):
objpath = self._ensure_blob(remote, digest)