diff options
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.java | 37 |
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( |