summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-03-12 14:18:09 +0000
committerJürg Billeter <j@bitron.ch>2019-03-25 10:24:41 +0100
commit64886a5978bc4ba6f3b63e1a01bfcb1bf6d9ffb1 (patch)
treee85f3e28e8d58ae171b472301978f6e33107acb2
parentc568ade8449008fe7254d10d4bb239a59ace6fcb (diff)
downloadbuildstream-64886a5978bc4ba6f3b63e1a01bfcb1bf6d9ffb1.tar.gz
_casbaseddirectory.py: Catch FileNotFoundError in _populate_index()
This is in preparation for partial CAS support.
-rw-r--r--buildstream/storage/_casbaseddirectory.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/buildstream/storage/_casbaseddirectory.py b/buildstream/storage/_casbaseddirectory.py
index 8369bd0cc..0fea1924f 100644
--- a/buildstream/storage/_casbaseddirectory.py
+++ b/buildstream/storage/_casbaseddirectory.py
@@ -124,9 +124,12 @@ class CasBasedDirectory(Directory):
self._populate_index(digest)
def _populate_index(self, digest):
- pb2_directory = remote_execution_pb2.Directory()
- with open(self.cas_cache.objpath(digest), 'rb') as f:
- pb2_directory.ParseFromString(f.read())
+ try:
+ pb2_directory = remote_execution_pb2.Directory()
+ with open(self.cas_cache.objpath(digest), 'rb') as f:
+ pb2_directory.ParseFromString(f.read())
+ except FileNotFoundError as e:
+ raise VirtualDirectoryError("Directory not found in local cache: {}".format(e)) from e
for entry in pb2_directory.directories:
self.index[entry.name] = IndexEntry(entry.name, _FileType.DIRECTORY,