summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-12-05 13:00:49 +0000
committerJürg Billeter <j@bitron.ch>2019-12-05 13:00:49 +0000
commit30e4a7d60477f1e6c8f82e13def193048aaaf003 (patch)
tree8fd42682b9f772ed6f974891b9552cbec47cf9de
parent44e0718192d13d02abfee97c3ee3301c74ab6488 (diff)
parent460268b2548cdff520f5e98006016eb0ea20b5c3 (diff)
downloadbuildstream-30e4a7d60477f1e6c8f82e13def193048aaaf003.tar.gz
Merge branch 'juerg/cas-directory-reset' into 'master'
_sandboxreapi.py: Reset CasBasedDirectory instead of recreating it See merge request BuildStream/buildstream!1749
-rw-r--r--src/buildstream/sandbox/_sandboxreapi.py5
-rw-r--r--src/buildstream/sandbox/sandbox.py6
-rw-r--r--src/buildstream/storage/_casbaseddirectory.py7
3 files changed, 8 insertions, 10 deletions
diff --git a/src/buildstream/sandbox/_sandboxreapi.py b/src/buildstream/sandbox/_sandboxreapi.py
index d2cd1b3bc..834cdd8e0 100644
--- a/src/buildstream/sandbox/_sandboxreapi.py
+++ b/src/buildstream/sandbox/_sandboxreapi.py
@@ -21,7 +21,6 @@ from .sandbox import Sandbox, SandboxCommandError, _SandboxBatch
from .. import utils
from .._exceptions import ImplError, SandboxError
from .._protos.build.bazel.remote.execution.v2 import remote_execution_pb2
-from ..storage._casbaseddirectory import CasBasedDirectory
# SandboxREAPI()
@@ -143,8 +142,8 @@ class SandboxREAPI(Sandbox):
# to replace the sandbox's virtual directory with that. Creating a new virtual directory object
# from another hash will be interesting, though...
- new_dir = CasBasedDirectory(cascache, digest=dir_digest)
- self._set_virtual_directory(new_dir)
+ vdir = self.get_virtual_directory()
+ vdir._reset(digest=dir_digest)
def _create_batch(self, main_group, flags, *, collect=None):
return _SandboxREAPIBatch(self, main_group, flags, collect=collect)
diff --git a/src/buildstream/sandbox/sandbox.py b/src/buildstream/sandbox/sandbox.py
index 804759416..071e23e84 100644
--- a/src/buildstream/sandbox/sandbox.py
+++ b/src/buildstream/sandbox/sandbox.py
@@ -209,12 +209,6 @@ class Sandbox:
self._vdir = FileBasedDirectory(self._root)
return self._vdir
- def _set_virtual_directory(self, virtual_directory):
- """ Sets virtual directory. Useful after remote execution
- has rewritten the working directory.
- """
- self._vdir = virtual_directory
-
def set_environment(self, environment: Dict[str, str]) -> None:
"""Sets the environment variables for the sandbox
diff --git a/src/buildstream/storage/_casbaseddirectory.py b/src/buildstream/storage/_casbaseddirectory.py
index f90d5c503..d6ebc6f75 100644
--- a/src/buildstream/storage/_casbaseddirectory.py
+++ b/src/buildstream/storage/_casbaseddirectory.py
@@ -103,9 +103,14 @@ class CasBasedDirectory(Directory):
self.filename = filename
self.common_name = common_name
self.cas_cache = cas_cache
- self.__digest = digest
+ self.__digest = None
self.index = {}
self.parent = parent
+ self._reset(digest=digest)
+
+ def _reset(self, *, digest=None):
+ self.__digest = digest
+ self.index = {}
if digest:
self._populate_index(digest)