Add a "nonce version" fingerprint to ActionLookupValue, potentially populated for the ActionLookupValues that need it: *ConfiguredTargetValue and AspectValue. These need it because they contain objects that use reference equality for comparisons (notably, CcLinkingParams). Following an idea coming from shahan@.
PiperOrigin-RevId: 231319823
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java
index d0f2c4e..76242d9 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java
@@ -21,6 +21,7 @@
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
+import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
@@ -29,7 +30,11 @@
* Base class for all values which can provide the generating action of an artifact.
*/
public abstract class ActionLookupValue implements SkyValue {
+ @Nullable private final transient BigInteger nonceVersion;
+ protected ActionLookupValue(@Nullable BigInteger nonceVersion) {
+ this.nonceVersion = nonceVersion;
+ }
/** Returns a list of actions registered by this {@link SkyValue}. */
protected abstract ImmutableList<ActionAnalysisMetadata> getActions();
@@ -117,6 +122,11 @@
return null;
}
+ @Override
+ public BigInteger getValueFingerprint() {
+ return nonceVersion;
+ }
+
/**
* All subclasses of ActionLookupValue "own" artifacts with {@link ArtifactOwner}s that are
* subclasses of ActionLookupKey. This allows callers to easily find the value key, while
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java b/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
index d75143b..22f82f7 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/BasicActionLookupValue.java
@@ -19,6 +19,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
+import java.math.BigInteger;
+import javax.annotation.Nullable;
/**
* Basic implementation of {@link ActionLookupValue} where the value itself owns and maintains
@@ -29,19 +31,23 @@
@VisibleForSerialization protected final ImmutableMap<Artifact, Integer> generatingActionIndex;
protected BasicActionLookupValue(ActionAnalysisMetadata action) {
- this(Actions.GeneratingActions.fromSingleAction(action));
+ this(Actions.GeneratingActions.fromSingleAction(action), /*nonceVersion=*/ null);
}
protected BasicActionLookupValue(
ImmutableList<ActionAnalysisMetadata> actions,
- ImmutableMap<Artifact, Integer> generatingActionIndex) {
+ ImmutableMap<Artifact, Integer> generatingActionIndex,
+ @Nullable BigInteger nonceVersion) {
+ super(nonceVersion);
this.actions = actions;
this.generatingActionIndex = generatingActionIndex;
}
@VisibleForTesting
- public BasicActionLookupValue(Actions.GeneratingActions generatingActions) {
- this(generatingActions.getActions(), generatingActions.getGeneratingActionIndex());
+ public BasicActionLookupValue(
+ Actions.GeneratingActions generatingActions, @Nullable BigInteger nonceVersion) {
+ this(
+ generatingActions.getActions(), generatingActions.getGeneratingActionIndex(), nonceVersion);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
index 8ee7db4..e460f47 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
@@ -27,7 +27,7 @@
*/
public final class ActionTemplateExpansionValue extends BasicActionLookupValue {
ActionTemplateExpansionValue(GeneratingActions generatingActions) {
- super(generatingActions);
+ super(generatingActions, /*nonceVersion=*/ null);
}
static ActionTemplateExpansionKey key(ActionLookupKey actionLookupKey, int actionIndex) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 37a9761..4f7d257 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -73,9 +73,11 @@
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+import java.util.function.Supplier;
import javax.annotation.Nullable;
/**
@@ -108,18 +110,22 @@
*/
private final boolean storeTransitivePackagesForPackageRootResolution;
+ private final Supplier<BigInteger> nonceVersion;
+
AspectFunction(
BuildViewProvider buildViewProvider,
RuleClassProvider ruleClassProvider,
@Nullable SkylarkImportLookupFunction skylarkImportLookupFunctionForInlining,
boolean storeTransitivePackagesForPackageRootResolution,
- BuildOptions defaultBuildOptions) {
+ BuildOptions defaultBuildOptions,
+ Supplier<BigInteger> nonceVersion) {
this.buildViewProvider = buildViewProvider;
this.ruleClassProvider = ruleClassProvider;
this.skylarkImportLookupFunctionForInlining = skylarkImportLookupFunctionForInlining;
this.storeTransitivePackagesForPackageRootResolution =
storeTransitivePackagesForPackageRootResolution;
this.defaultBuildOptions = defaultBuildOptions;
+ this.nonceVersion = nonceVersion;
}
/**
@@ -580,7 +586,8 @@
originalTarget.getLabel(),
originalTarget.getLocation(),
ConfiguredAspect.forAlias(real.getConfiguredAspect()),
- transitivePackagesForPackageRootResolution);
+ transitivePackagesForPackageRootResolution,
+ nonceVersion.get());
}
@Nullable
@@ -658,7 +665,8 @@
configuredAspect,
transitivePackagesForPackageRootResolution == null
? null
- : transitivePackagesForPackageRootResolution.build());
+ : transitivePackagesForPackageRootResolution.build(),
+ nonceVersion.get());
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index eb525be..c5f3242 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -36,6 +36,7 @@
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.syntax.SkylarkImport;
import com.google.devtools.build.skyframe.SkyFunctionName;
+import java.math.BigInteger;
import javax.annotation.Nullable;
/** An aspect in the context of the Skyframe graph. */
@@ -442,8 +443,9 @@
Label label,
Location location,
ConfiguredAspect configuredAspect,
- NestedSet<Package> transitivePackagesForPackageRootResolution) {
- super(configuredAspect.getActions(), configuredAspect.getGeneratingActionIndex());
+ NestedSet<Package> transitivePackagesForPackageRootResolution,
+ BigInteger nonceVersion) {
+ super(configuredAspect.getActions(), configuredAspect.getGeneratingActionIndex(), nonceVersion);
this.label = Preconditions.checkNotNull(label, actions);
this.aspect = Preconditions.checkNotNull(aspect, label);
this.location = Preconditions.checkNotNull(location, label);
@@ -489,6 +491,11 @@
transitivePackagesForPackageRootResolution = null;
}
+ @Override
+ public final boolean mustBeReferenceComparedOnRecomputation() {
+ return true;
+ }
+
/**
* Returns the set of packages transitively loaded by this value. Must only be used for
* constructing the package -> source root map needed for some builds. If the caller has not
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
index 298e002..e3acadb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
@@ -34,7 +34,7 @@
private final BuildInfoCollection collection;
BuildInfoCollectionValue(BuildInfoCollection collection, GeneratingActions generatingActions) {
- super(generatingActions);
+ super(generatingActions, /*nonceVersion=*/ null);
this.collection = collection;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 8115236..bebbc06 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -79,6 +79,7 @@
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import com.google.devtools.build.skyframe.ValueOrException;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -88,6 +89,7 @@
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Semaphore;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -136,6 +138,8 @@
private final Semaphore cpuBoundSemaphore;
private final BuildOptions defaultBuildOptions;
@Nullable private final ConfiguredTargetProgressReceiver configuredTargetProgress;
+ private final Supplier<BigInteger> nonceVersion;
+
/**
* Indicates whether the set of packages transitively loaded for a given {@link
* ConfiguredTargetValue} will be needed for package root resolution later in the build. If not,
@@ -152,7 +156,8 @@
boolean storeTransitivePackagesForPackageRootResolution,
boolean shouldUnblockCpuWorkWhenFetchingDeps,
BuildOptions defaultBuildOptions,
- @Nullable ConfiguredTargetProgressReceiver configuredTargetProgress) {
+ @Nullable ConfiguredTargetProgressReceiver configuredTargetProgress,
+ Supplier<BigInteger> nonceVersion) {
this.buildViewProvider = buildViewProvider;
this.ruleClassProvider = ruleClassProvider;
this.cpuBoundSemaphore = cpuBoundSemaphore;
@@ -161,6 +166,7 @@
this.shouldUnblockCpuWorkWhenFetchingDeps = shouldUnblockCpuWorkWhenFetchingDeps;
this.defaultBuildOptions = defaultBuildOptions;
this.configuredTargetProgress = configuredTargetProgress;
+ this.nonceVersion = nonceVersion;
}
@Override
@@ -831,7 +837,8 @@
ruleConfiguredTarget,
transitivePackagesForPackageRootResolution == null
? null
- : transitivePackagesForPackageRootResolution.build());
+ : transitivePackagesForPackageRootResolution.build(),
+ nonceVersion.get());
} else {
GeneratingActions generatingActions;
// Check for conflicting actions within this configured target (that indicates a bug in the
@@ -849,7 +856,8 @@
generatingActions,
transitivePackagesForPackageRootResolution == null
? null
- : transitivePackagesForPackageRootResolution.build());
+ : transitivePackagesForPackageRootResolution.build(),
+ nonceVersion.get());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java
index a4532c8..46e7d4b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetValue.java
@@ -70,4 +70,9 @@
* called.
*/
void clear(boolean clearEverything);
+
+ @Override
+ default boolean mustBeReferenceComparedOnRecomputation() {
+ return true;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java
index 2972664..1b78692 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java
@@ -28,7 +28,7 @@
@AutoCodec public static final CoverageReportKey COVERAGE_REPORT_KEY = new CoverageReportKey();
CoverageReportValue(GeneratingActions generatingActions) {
- super(generatingActions);
+ super(generatingActions, /*nonceVersion=*/ null);
}
static class CoverageReportKey extends ActionLookupKey {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/NonRuleConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/NonRuleConfiguredTargetValue.java
index 0bb8ff2..7c4e01c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/NonRuleConfiguredTargetValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/NonRuleConfiguredTargetValue.java
@@ -30,6 +30,7 @@
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
+import java.math.BigInteger;
import javax.annotation.Nullable;
/** A non-rule configured target in the context of a Skyframe graph. */
@@ -54,7 +55,7 @@
ImmutableList<ActionAnalysisMetadata> actions,
ImmutableMap<Artifact, Integer> generatingActionIndex,
ConfiguredTarget configuredTarget) {
- super(actions, generatingActionIndex);
+ super(actions, generatingActionIndex, /*nonceVersion=*/ null);
this.configuredTarget = configuredTarget;
// Transitive packages are not serialized.
this.transitivePackagesForPackageRootResolution = null;
@@ -63,8 +64,9 @@
NonRuleConfiguredTargetValue(
ConfiguredTarget configuredTarget,
GeneratingActions generatingActions,
- @Nullable NestedSet<Package> transitivePackagesForPackageRootResolution) {
- super(generatingActions);
+ @Nullable NestedSet<Package> transitivePackagesForPackageRootResolution,
+ @Nullable BigInteger nonceVersion) {
+ super(generatingActions, nonceVersion);
this.configuredTarget = Preconditions.checkNotNull(configuredTarget, generatingActions);
this.transitivePackagesForPackageRootResolution = transitivePackagesForPackageRootResolution;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RuleConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RuleConfiguredTargetValue.java
index d5b0744..43cdbc4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RuleConfiguredTargetValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RuleConfiguredTargetValue.java
@@ -28,6 +28,7 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import java.math.BigInteger;
import javax.annotation.Nullable;
/** A configured target in the context of a Skyframe graph. */
@@ -50,12 +51,17 @@
// Transitive packages are not serialized.
@AutoCodec.Instantiator
RuleConfiguredTargetValue(RuleConfiguredTarget configuredTarget) {
- this(configuredTarget, /*transitivePackagesForPackageRootResolution=*/ null);
+ this(
+ configuredTarget,
+ /*transitivePackagesForPackageRootResolution=*/ null,
+ /*nonceVersion=*/ null);
}
RuleConfiguredTargetValue(
RuleConfiguredTarget configuredTarget,
- @Nullable NestedSet<Package> transitivePackagesForPackageRootResolution) {
+ @Nullable NestedSet<Package> transitivePackagesForPackageRootResolution,
+ @Nullable BigInteger nonceVersion) {
+ super(nonceVersion);
this.configuredTarget = Preconditions.checkNotNull(configuredTarget);
this.transitivePackagesForPackageRootResolution = transitivePackagesForPackageRootResolution;
// These are specifically *not* copied to save memory.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index adaf81e..4de80d8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -171,6 +171,7 @@
import com.google.devtools.build.skyframe.WalkableGraph.WalkableGraphFactory;
import com.google.devtools.common.options.OptionsProvider;
import java.io.PrintStream;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -317,6 +318,7 @@
private final PathResolverFactory pathResolverFactory = new PathResolverFactoryImpl();
@Nullable private final NonexistentFileReceiver nonexistentFileReceiver;
+ private final MutableSupplier<BigInteger> nonceVersion = new MutableSupplier<>();
/** An {@link ArtifactResolverSupplier} that supports setting of an {@link ArtifactFactory}. */
public static class MutableArtifactFactorySupplier implements ArtifactResolverSupplier {
@@ -514,7 +516,8 @@
shouldStoreTransitivePackagesInLoadingAndAnalysis(),
shouldUnblockCpuWorkWhenFetchingDeps,
defaultBuildOptions,
- configuredTargetProgress));
+ configuredTargetProgress,
+ nonceVersion));
map.put(
SkyFunctions.ASPECT,
new AspectFunction(
@@ -522,7 +525,8 @@
ruleClassProvider,
skylarkImportLookupFunctionForInlining,
shouldStoreTransitivePackagesInLoadingAndAnalysis(),
- defaultBuildOptions));
+ defaultBuildOptions,
+ nonceVersion));
map.put(
SkyFunctions.LOAD_SKYLARK_ASPECT,
new ToplevelSkylarkAspectFunction(skylarkImportLookupFunctionForInlining));
@@ -626,6 +630,11 @@
return perBuildSyscallCache;
}
+ /** Do not use except in subclasses. */
+ protected void setNonceVersion(BigInteger nonceVersion) {
+ this.nonceVersion.set(nonceVersion);
+ }
+
@ThreadCompatible
public void setActive(boolean active) {
this.active = active;
@@ -2599,4 +2608,3 @@
return buildDriver.evaluate(roots, evaluationContext);
}
}
-
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PackagePathReceiver.java b/src/main/java/com/google/devtools/build/lib/vfs/PackagePathReceiver.java
new file mode 100644
index 0000000..2228ea0
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PackagePathReceiver.java
@@ -0,0 +1,20 @@
+// Copyright 2019 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.vfs;
+
+/** Interface to be informed when a package path is set. */
+public interface PackagePathReceiver {
+ void setPackagePath(PathFragment packagePath);
+}
diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyValue.java b/src/main/java/com/google/devtools/build/skyframe/SkyValue.java
index fdac334..03b5e94 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyValue.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyValue.java
@@ -30,4 +30,15 @@
default BigInteger getValueFingerprint() {
return null;
}
+
+ /**
+ * Returns true for values that may compare objects that must be compared using reference
+ * equality. Such values may force re-evaluation of downstream nodes even if they evaluate to the
+ * same {@link Version} as before, since the downstream nodes may have reference-unequal objects
+ * from the previous evaluation. Under normal circumstances, a node can never re-evaluate to the
+ * same {@link Version}, so this doesn't come into play.
+ */
+ default boolean mustBeReferenceComparedOnRecomputation() {
+ return false;
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java
index e1ecf96..4e8bbea 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java
@@ -224,7 +224,8 @@
return new NonRuleConfiguredTargetValue(
Mockito.mock(ConfiguredTarget.class),
Actions.GeneratingActions.fromSingleAction(actionTemplate),
- NestedSetBuilder.<Package>stableOrder().build());
+ NestedSetBuilder.<Package>stableOrder().build(),
+ /*nonceVersion=*/ null);
}
private SpecialArtifact createTreeArtifact(String path) {
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java
index c87860b..52de5fe 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java
@@ -425,7 +425,8 @@
ALL_OWNER,
new BasicActionLookupValue(
Actions.filterSharedActionsAndThrowActionConflict(
- actionKeyContext, ImmutableList.copyOf(actions)))));
+ actionKeyContext, ImmutableList.copyOf(actions)),
+ /*nonceVersion=*/ null)));
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index add74d0..97c5f16 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -262,7 +262,8 @@
ACTION_LOOKUP_KEY,
new BasicActionLookupValue(
Actions.filterSharedActionsAndThrowActionConflict(
- actionKeyContext, ImmutableList.copyOf(actions)))));
+ actionKeyContext, ImmutableList.copyOf(actions)),
+ /*nonceVersion=*/ null)));
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java
index 126224a..90cce59 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunctionTest.java
@@ -58,7 +58,10 @@
private static ConfiguredTargetValue createConfiguredTargetValue(
ConfiguredTarget configuredTarget) {
return new NonRuleConfiguredTargetValue(
- configuredTarget, GeneratingActions.EMPTY, NestedSetBuilder.emptySet(Order.STABLE_ORDER));
+ configuredTarget,
+ GeneratingActions.EMPTY,
+ NestedSetBuilder.emptySet(Order.STABLE_ORDER),
+ /*nonceVersion=*/ null);
}
private EvaluationResult<ToolchainResolutionValue> invokeToolchainResolution(SkyKey key)
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java
index 7b052be..d7dcdcd 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java
@@ -234,7 +234,8 @@
ALL_OWNER,
new BasicActionLookupValue(
Actions.filterSharedActionsAndThrowActionConflict(
- actionKeyContext, ImmutableList.copyOf(actions)))));
+ actionKeyContext, ImmutableList.copyOf(actions)),
+ /*nonceVersion=*/ null)));
}
}