aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
diff options
context:
space:
mode:
authorGravatar shahan <shahan@google.com>2018-06-26 11:24:59 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-26 11:27:44 -0700
commitef6f4cff9ee3e0c92b61f59ca0585f63ff17e9a4 (patch)
tree18edd2f65766e2f61f0fe38d4b44497ced83dd09 /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
parent89dfee5221180aa49b559f22eb6d5bf6bc14c769 (diff)
Instead of depending on mutable inputs of upstream CppCompileAction instances,
CppCompileAction.discoverInputsStage2 retrieves values of discovered modules from ActionExecutionValue. This addresses a possible a correctness issue. PiperOrigin-RevId: 202162180
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
index 37f8b2031f..a1feff8bd9 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
@@ -19,6 +19,7 @@ import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.devtools.build.lib.actions.ActionLookupData;
import com.google.devtools.build.lib.actions.ActionLookupValue;
@@ -73,6 +74,8 @@ public class ActionExecutionValue implements SkyValue {
@Nullable private final ImmutableList<FilesetOutputSymlink> outputSymlinks;
+ @Nullable private final ImmutableSet<Artifact> discoveredModules;
+
/**
* @param artifactData Map from Artifacts to corresponding FileValues.
* @param treeArtifactData All tree artifact data.
@@ -82,16 +85,19 @@ public class ActionExecutionValue implements SkyValue {
* data are not used by the {@link FilesystemValueChecker} to invalidate
* ActionExecutionValues.
* @param outputSymlinks This represents the SymlinkTree which is the output of a fileset action.
+ * @param discoveredModules cpp modules discovered
*/
private ActionExecutionValue(
Map<Artifact, FileValue> artifactData,
Map<Artifact, TreeArtifactValue> treeArtifactData,
Map<Artifact, FileArtifactValue> additionalOutputData,
- @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks) {
+ @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks,
+ @Nullable ImmutableSet<Artifact> discoveredModules) {
this.artifactData = ImmutableMap.<Artifact, FileValue>copyOf(artifactData);
this.additionalOutputData = ImmutableMap.copyOf(additionalOutputData);
this.treeArtifactData = ImmutableMap.copyOf(treeArtifactData);
this.outputSymlinks = outputSymlinks;
+ this.discoveredModules = discoveredModules;
}
static ActionExecutionValue create(
@@ -99,12 +105,17 @@ public class ActionExecutionValue implements SkyValue {
Map<Artifact, TreeArtifactValue> treeArtifactData,
Map<Artifact, FileArtifactValue> additionalOutputData,
@Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks,
+ @Nullable ImmutableSet<Artifact> discoveredModules,
boolean notifyOnActionCacheHitAction) {
return notifyOnActionCacheHitAction
? new CrossServerUnshareableActionExecutionValue(
- artifactData, treeArtifactData, additionalOutputData, outputSymlinks)
+ artifactData, treeArtifactData, additionalOutputData, outputSymlinks, discoveredModules)
: new ActionExecutionValue(
- artifactData, treeArtifactData, additionalOutputData, outputSymlinks);
+ artifactData,
+ treeArtifactData,
+ additionalOutputData,
+ outputSymlinks,
+ discoveredModules);
}
/**
@@ -155,6 +166,11 @@ public class ActionExecutionValue implements SkyValue {
return outputSymlinks;
}
+ @Nullable
+ public ImmutableSet<Artifact> getDiscoveredModules() {
+ return discoveredModules;
+ }
+
/**
* @param lookupKey A {@link SkyKey} whose argument is an {@code ActionLookupKey}, whose
* corresponding {@code ActionLookupValue} contains the action to be executed.
@@ -224,8 +240,10 @@ public class ActionExecutionValue implements SkyValue {
Map<Artifact, FileValue> artifactData,
Map<Artifact, TreeArtifactValue> treeArtifactData,
Map<Artifact, FileArtifactValue> additionalOutputData,
- @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks) {
- super(artifactData, treeArtifactData, additionalOutputData, outputSymlinks);
+ @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks,
+ @Nullable ImmutableSet<Artifact> discoveredModules) {
+ super(
+ artifactData, treeArtifactData, additionalOutputData, outputSymlinks, discoveredModules);
}
}
}