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-05-31 17:37:26 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-31 17:38:59 -0700
commit242c3b82e4455c932587395c1e9bff4fd61b0162 (patch)
tree00572d496c12176d85e5d296f271376ce626455f /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
parent0c86dcf2e42f44bbac2c358a77ba5d1217eaac0f (diff)
Converts PLACEHOLDER FileValues into RegularFileValue when queried via
ActionExecutionValue.getAllFileValues. PiperOrigin-RevId: 198807229
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.java22
1 files changed, 20 insertions, 2 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 7c7150bffb..a45983c1e9 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,12 +19,14 @@ 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.Maps;
import com.google.devtools.build.lib.actions.ActionLookupData;
import com.google.devtools.build.lib.actions.ActionLookupValue;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.FilesetOutputSymlink;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
+import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import java.util.Map;
@@ -118,8 +120,8 @@ public class ActionExecutionValue implements SkyValue {
* returned by {@link #getData}. Primarily needed by {@link FilesystemValueChecker}, also
* called by {@link ArtifactFunction} when aggregating a {@link TreeArtifactValue}.
*/
- ImmutableMap<Artifact, FileValue> getAllFileValues() {
- return artifactData;
+ Map<Artifact, FileValue> getAllFileValues() {
+ return Maps.transformEntries(artifactData, this::transformIfPlaceholder);
}
/**
@@ -175,4 +177,20 @@ public class ActionExecutionValue implements SkyValue {
public int hashCode() {
return Objects.hashCode(artifactData, treeArtifactData, additionalOutputData);
}
+
+ /** Transforms PLACEHOLDER values into RegularFileValue instances. */
+ private FileValue transformIfPlaceholder(Artifact artifact, FileValue value) {
+ if (value == FileValue.PLACEHOLDER) {
+ FileArtifactValue metadata =
+ Preconditions.checkNotNull(
+ additionalOutputData.get(artifact),
+ "Placeholder without corresponding FileArtifactValue for: %s",
+ artifact);
+ return new FileValue.RegularFileValue(
+ RootedPath.toRootedPath(artifact.getRoot().getRoot(), artifact.getRootRelativePath()),
+ new FileStateValue.RegularFileStateValue(
+ metadata.getSize(), metadata.getDigest(), /*contentsProxy=*/ null));
+ }
+ return value;
+ }
}