aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java
diff options
context:
space:
mode:
authorGravatar felly <felly@google.com>2018-08-06 09:46:12 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-06 09:47:54 -0700
commit32a97a653735cf7c9eff5abdf0f7632f9a6525e2 (patch)
tree19fbf98de12c4125ef39312cfde5622ec41d2541 /src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java
parente6cd3f836171d5db7bcc955b8bab8556cde3cc96 (diff)
Order tree artifacts.
Fixes #5686. RELNOTES: None PiperOrigin-RevId: 207559658
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java
index 13ff08a65f..aca26775a1 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java
@@ -13,13 +13,12 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
-import com.google.common.base.Function;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
-import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact;
import com.google.devtools.build.lib.actions.FileArtifactValue;
import com.google.devtools.build.lib.actions.cache.DigestUtils;
@@ -29,6 +28,7 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyValue;
import java.io.IOException;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import javax.annotation.Nullable;
@@ -39,21 +39,14 @@ import javax.annotation.Nullable;
*/
@AutoCodec
class TreeArtifactValue implements SkyValue {
- private static final Function<Artifact, PathFragment> PARENT_RELATIVE_PATHS =
- new Function<Artifact, PathFragment>() {
- @Override
- public PathFragment apply(Artifact artifact) {
- return artifact.getParentRelativePath();
- }
- };
private final byte[] digest;
- private final Map<TreeFileArtifact, FileArtifactValue> childData;
+ private final ImmutableSortedMap<TreeFileArtifact, FileArtifactValue> childData;
@AutoCodec.VisibleForSerialization
TreeArtifactValue(byte[] digest, Map<TreeFileArtifact, FileArtifactValue> childData) {
this.digest = digest;
- this.childData = ImmutableMap.copyOf(childData);
+ this.childData = sortedCopy(childData);
}
/**
@@ -69,7 +62,13 @@ class TreeArtifactValue implements SkyValue {
return new TreeArtifactValue(
DigestUtils.fromMetadata(digestBuilder).getDigestBytesUnsafe(),
- ImmutableMap.copyOf(childFileValues));
+ sortedCopy(childFileValues));
+ }
+
+ private static ImmutableSortedMap<TreeFileArtifact, FileArtifactValue> sortedCopy(
+ Map<TreeFileArtifact, FileArtifactValue> data) {
+ return ImmutableSortedMap.copyOf(data,
+ Comparator.comparing(TreeFileArtifact::getParentRelativePath));
}
FileArtifactValue getSelfData() {
@@ -81,7 +80,8 @@ class TreeArtifactValue implements SkyValue {
}
Set<PathFragment> getChildPaths() {
- return ImmutableSet.copyOf(Iterables.transform(childData.keySet(), PARENT_RELATIVE_PATHS));
+ return ImmutableSet.copyOf(Iterables.transform(childData.keySet(),
+ TreeFileArtifact::getParentRelativePath));
}
@Nullable