diff options
author | Jürg Billeter <j@bitron.ch> | 2019-10-15 11:59:58 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2019-10-17 09:13:16 +0200 |
commit | 8019ef3f1ae58c2450e3549c8c3837cd969368e1 (patch) | |
tree | 12419121ba813741ed6b871b25d7a99506bfbd17 | |
parent | 9147994107c27e7760a575b9a8b2f2cc3ce46b98 (diff) | |
download | buildstream-juerg/fetch-tree-test-2.tar.gz |
cascache.py: Always update mtime in contains_directory()juerg/fetch-tree-test-2
This is required for LRU cache expiry.
-rw-r--r-- | src/buildstream/_artifact.py | 2 | ||||
-rw-r--r-- | src/buildstream/_cas/cascache.py | 18 |
2 files changed, 8 insertions, 12 deletions
diff --git a/src/buildstream/_artifact.py b/src/buildstream/_artifact.py index 1e3e39b8f..e5174eaea 100644 --- a/src/buildstream/_artifact.py +++ b/src/buildstream/_artifact.py @@ -424,7 +424,7 @@ class Artifact(): # Check whether 'files' subdirectory is available, with or without file contents if (require_directories and str(artifact.files) and - not self._cas.contains_directory(artifact.files, with_files=require_files, update_mtime=True)): + not self._cas.contains_directory(artifact.files, with_files=require_files)): self._cached = False return False diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py index 83b8e8539..3acc5b3ea 100644 --- a/src/buildstream/_cas/cascache.py +++ b/src/buildstream/_cas/cascache.py @@ -244,33 +244,29 @@ class CASCache(): # Args: # digest (Digest): The directory digest to check # with_files (bool): Whether to check files as well - # update_mtime (bool): Whether to update the timestamp # # Returns: True if the directory is available in the local cache # - def contains_directory(self, digest, *, with_files, update_mtime=False): + def contains_directory(self, digest, *, with_files): try: directory = remote_execution_pb2.Directory() path = self.objpath(digest) with open(path, 'rb') as f: directory.ParseFromString(f.read()) - if update_mtime: - os.utime(f.fileno()) + os.utime(f.fileno()) # Optionally check presence of files if with_files: for filenode in directory.files: path = self.objpath(filenode.digest) - if update_mtime: - # No need for separate `exists()` call as this will raise - # FileNotFoundError if the file does not exist. - os.utime(path) - elif not os.path.exists(path): - return False + + # No need for separate `exists()` call as this will raise + # FileNotFoundError if the file does not exist. + os.utime(path) # Check subdirectories for dirnode in directory.directories: - if not self.contains_directory(dirnode.digest, with_files=with_files, update_mtime=update_mtime): + if not self.contains_directory(dirnode.digest, with_files=with_files): return False return True |