Source:
private SpawnResult actuallyExec(Spawn spawn, SpawnExecutionContext context) throws ExecException, IOException, InterruptedException { if (Iterables.isEmpty(spawn.getToolFiles())) { throw new UserExecException( String.format(ERROR_MESSAGE_PREFIX + REASON_NO_TOOLS, spawn.getMnemonic())); } List<String> flagFiles = new ArrayList<>(); ImmutableList<String> workerArgs = splitSpawnArgsIntoWorkerArgsAndFlagFiles(spawn, flagFiles); Map<String, String> env = localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), binTools, "/tmp"); MetadataProvider inputFileCache = context.getMetadataProvider(); SortedMap<PathFragment, HashCode> workerFiles = WorkerFilesHash.getWorkerFilesWithHashes( spawn, context.getArtifactExpander(), context.getPathResolver(), context.getMetadataProvider()); HashCode workerFilesCombinedHash = WorkerFilesHash.getCombinedHash(workerFiles); Map<PathFragment, Path> inputFiles = SandboxHelpers.processInputFiles( spawn, context, execRoot, sandboxUsesExpandedTreeArtifactsInRunfiles); SandboxOutputs outputs = SandboxHelpers.getOutputs(spawn); boolean proxyed = Spawns.supportsMultiplexWorkers(spawn); WorkerKey key = new WorkerKey( workerArgs, env, execRoot, spawn.getMnemonic(), workerFilesCombinedHash, workerFiles, context.speculating(), proxyed); WorkRequest workRequest = createWorkRequest(spawn, context, flagFiles, inputFileCache); long startTime = System.currentTimeMillis(); WorkResponse response = execInWorker(spawn, key, workRequest, context, inputFiles, outputs); Duration wallTime = Duration.ofMillis(System.currentTimeMillis() - startTime); FileOutErr outErr = context.getFileOutErr(); response.getOutputBytes().writeTo(outErr.getErrorStream()); int exitCode = response.getExitCode(); return new SpawnResult.Builder() .setRunnerName(getName()) .setExitCode(exitCode) .setStatus(exitCode == 0 ? SpawnResult.Status.SUCCESS : SpawnResult.Status.NON_ZERO_EXIT) .setWallTime(wallTime) .build(); }

Target:
private SpawnResult actuallyExec(Spawn spawn, SpawnExecutionContext context) throws ExecException, IOException, InterruptedException { if (Iterables.isEmpty(spawn.getToolFiles())) { throw new UserExecException( String.format(ERROR_MESSAGE_PREFIX + REASON_NO_TOOLS, spawn.getMnemonic())); } runfilesTreeUpdater.updateRunfilesDirectory( execRoot, spawn.getRunfilesSupplier(), context.getPathResolver(), binTools, spawn.getEnvironment(), context.getFileOutErr()); List<String> flagFiles = new ArrayList<>(); ImmutableList<String> workerArgs = splitSpawnArgsIntoWorkerArgsAndFlagFiles(spawn, flagFiles); Map<String, String> env = localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), binTools, "/tmp"); MetadataProvider inputFileCache = context.getMetadataProvider(); SortedMap<PathFragment, HashCode> workerFiles = WorkerFilesHash.getWorkerFilesWithHashes( spawn, context.getArtifactExpander(), context.getPathResolver(), context.getMetadataProvider()); HashCode workerFilesCombinedHash = WorkerFilesHash.getCombinedHash(workerFiles); SandboxInputs inputFiles = SandboxHelpers.processInputFiles( spawn, context, execRoot, sandboxUsesExpandedTreeArtifactsInRunfiles); SandboxOutputs outputs = SandboxHelpers.getOutputs(spawn); WorkerKey key = new WorkerKey( workerArgs, env, execRoot, spawn.getMnemonic(), workerFilesCombinedHash, workerFiles, context.speculating(), Spawns.supportsMultiplexWorkers(spawn)); long startTime = System.currentTimeMillis(); WorkResponse response = execInWorker(spawn, key, context, inputFiles, outputs, flagFiles, inputFileCache); Duration wallTime = Duration.ofMillis(System.currentTimeMillis() - startTime); FileOutErr outErr = context.getFileOutErr(); response.getOutputBytes().writeTo(outErr.getErrorStream()); int exitCode = response.getExitCode(); return new SpawnResult.Builder() .setRunnerName(getName()) .setExitCode(exitCode) .setStatus(exitCode == 0 ? SpawnResult.Status.SUCCESS : SpawnResult.Status.NON_ZERO_EXIT) .setWallTime(wallTime) .build(); }