diff options
author | felly <felly@google.com> | 2018-08-09 12:55:47 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-09 12:57:32 -0700 |
commit | 943a9c792032c75b25a1665e7143409fe3950041 (patch) | |
tree | 4c7d5ad6cf65f670252149c230704c4b98481c0d /src/main/java/com/google/devtools/build/lib/skyframe | |
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')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java | 27 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java | 7 |
2 files changed, 25 insertions, 9 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); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java index 5f9ceb9da6..5ddabcce58 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java @@ -373,7 +373,7 @@ public final class SkyframeActionExecutor { return executorEngine.getExecRoot(); } - /** REQUIRES: {@link usesActionFileSystem} is true */ + /** REQUIRES: {@link #usesActionFileSystem()} is true */ FileSystem createActionFileSystem( String relativeOutputPath, ActionInputMap inputArtifactData, @@ -388,8 +388,9 @@ public final class SkyframeActionExecutor { } void updateActionFileSystemContext( - FileSystem actionFileSystem, Environment env, MetadataConsumer consumer) { - outputService.updateActionFileSystemContext(actionFileSystem, env, consumer); + FileSystem actionFileSystem, Environment env, MetadataConsumer consumer, + ImmutableMap<PathFragment, ImmutableList<FilesetOutputSymlink>> filesets) throws IOException { + outputService.updateActionFileSystemContext(actionFileSystem, env, consumer, filesets); } void executionOver() { |