aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java37
1 files changed, 26 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
index 92f6234cc6..0e141e95a6 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java
@@ -24,13 +24,14 @@ import com.google.devtools.build.lib.actions.SpawnActionContext;
import com.google.devtools.build.lib.actions.UserExecException;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.buildtool.BuildRequest;
+import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.Set;
import java.util.UUID;
-import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -63,14 +64,12 @@ public class LinuxSandboxedStrategy extends SandboxStrategy {
LinuxSandboxedStrategy(
BuildRequest buildRequest,
BlazeDirectories blazeDirs,
- ExecutorService backgroundWorkers,
boolean verboseFailures,
String productName,
boolean fullySupported) {
super(
buildRequest,
blazeDirs,
- backgroundWorkers,
verboseFailures,
buildRequest.getOptions(SandboxOptions.class));
this.sandboxOptions = buildRequest.getOptions(SandboxOptions.class);
@@ -123,14 +122,30 @@ public class LinuxSandboxedStrategy extends SandboxStrategy {
}
SandboxRunner runner = getSandboxRunner(spawn, sandboxPath, sandboxExecRoot, sandboxTempDir);
- runSpawn(
- spawn,
- actionExecutionContext,
- spawn.getEnvironment(),
- symlinkedExecRoot,
- outputs,
- runner,
- writeOutputFiles);
+ try {
+ runSpawn(
+ spawn,
+ actionExecutionContext,
+ spawn.getEnvironment(),
+ symlinkedExecRoot,
+ outputs,
+ runner,
+ writeOutputFiles);
+ } finally {
+ if (!sandboxOptions.sandboxDebug) {
+ try {
+ FileSystemUtils.deleteTree(sandboxPath);
+ } catch (IOException e) {
+ executor
+ .getEventHandler()
+ .handle(
+ Event.error(
+ String.format(
+ "Cannot delete sandbox directory after action execution: %s (%s)",
+ sandboxPath.getPathString(), e)));
+ }
+ }
+ }
}
private SandboxRunner getSandboxRunner(