diff options
author | 2018-08-09 12:55:47 -0700 | |
---|---|---|
committer | 2018-08-09 12:57:32 -0700 | |
commit | 943a9c792032c75b25a1665e7143409fe3950041 (patch) | |
tree | 4c7d5ad6cf65f670252149c230704c4b98481c0d /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java | |
parent | dec4e17a98477162ef42ab610b1e94b7cdaaf438 (diff) |
Pass Fileset information to the Action filesystem.
PiperOrigin-RevId: 208096548
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java index 8cefd9c0a7..7bff8b0193 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java @@ -423,7 +423,13 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver if (action.discoversInputs()) { if (state.discoveredInputs == null) { try { - state.updateFileSystemContext(skyframeActionExecutor, env, metadataHandler); + try { + state.updateFileSystemContext(skyframeActionExecutor, env, metadataHandler, + ImmutableMap.of()); + } catch (IOException e) { + throw new ActionExecutionException( + "Failed to update filesystem context: ", e, action, /*catastrophe=*/ false); + } state.discoveredInputs = skyframeActionExecutor.discoverInputs( action, perActionFileCache, metadataHandler, env, state.actionFileSystem); @@ -476,13 +482,20 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver filesetMappings.put(actionInput.getExecPath(), filesetValue.getOutputSymlinks()); } - state.updateFileSystemContext(skyframeActionExecutor, env, metadataHandler); + ImmutableMap<PathFragment, ImmutableList<FilesetOutputSymlink>> filesets = + filesetMappings.build(); + try { + state.updateFileSystemContext(skyframeActionExecutor, env, metadataHandler, filesets); + } catch (IOException e) { + throw new ActionExecutionException( + "Failed to update filesystem context: ", e, action, /*catastrophe=*/ false); + } try (ActionExecutionContext actionExecutionContext = skyframeActionExecutor.getContext( perActionFileCache, metadataHandler, Collections.unmodifiableMap(state.expandedArtifacts), - filesetMappings.build(), + filesets, state.actionFileSystem)) { if (!state.hasExecutedAction()) { state.value = @@ -792,11 +805,13 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver /** Must be called to assign values to the given variables as they change. */ void updateFileSystemContext( SkyframeActionExecutor executor, - SkyFunction.Environment env, - ActionMetadataHandler metadataHandler) { + Environment env, + ActionMetadataHandler metadataHandler, + ImmutableMap<PathFragment, ImmutableList<FilesetOutputSymlink>> filesets) + throws IOException { if (actionFileSystem != null) { executor.updateActionFileSystemContext( - actionFileSystem, env, metadataHandler::injectOutputData); + actionFileSystem, env, metadataHandler::injectOutputData, filesets); } } |