Move NestedSet toListInterruptibly to a separate class supporting callbacks.
CppCompileAction adds information to the log for long NestedSet expansion.
Remove the logging logic and use the new class to expand the modules NestedSet.
PiperOrigin-RevId: 299254214
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java
index c55401d..e2b1436 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java
@@ -21,6 +21,7 @@
import com.google.devtools.build.lib.actions.cache.MetadataHandler;
import com.google.devtools.build.lib.clock.Clock;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventKind;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -70,6 +71,7 @@
@Nullable private ImmutableList<FilesetOutputSymlink> outputSymlinks;
private final ArtifactPathResolver pathResolver;
+ private final NestedSetExpander nestedSetExpander;
private ActionExecutionContext(
Executor executor,
@@ -85,7 +87,8 @@
@Nullable ArtifactExpander artifactExpander,
@Nullable Environment env,
@Nullable FileSystem actionFileSystem,
- @Nullable Object skyframeDepsResult) {
+ @Nullable Object skyframeDepsResult,
+ NestedSetExpander nestedSetExpander) {
this.actionInputFileCache = actionInputFileCache;
this.actionInputPrefetcher = actionInputPrefetcher;
this.actionKeyContext = actionKeyContext;
@@ -103,6 +106,7 @@
this.pathResolver = ArtifactPathResolver.createPathResolver(actionFileSystem,
// executor is only ever null in testing.
executor == null ? null : executor.getExecRoot());
+ this.nestedSetExpander = nestedSetExpander;
}
public ActionExecutionContext(
@@ -118,7 +122,8 @@
ImmutableMap<Artifact, ImmutableList<FilesetOutputSymlink>> topLevelFilesets,
ArtifactExpander artifactExpander,
@Nullable FileSystem actionFileSystem,
- @Nullable Object skyframeDepsResult) {
+ @Nullable Object skyframeDepsResult,
+ NestedSetExpander nestedSetExpander) {
this(
executor,
actionInputFileCache,
@@ -133,7 +138,8 @@
artifactExpander,
/*env=*/ null,
actionFileSystem,
- skyframeDepsResult);
+ skyframeDepsResult,
+ nestedSetExpander);
}
public static ActionExecutionContext forInputDiscovery(
@@ -147,7 +153,8 @@
ExtendedEventHandler eventHandler,
Map<String, String> clientEnv,
Environment env,
- @Nullable FileSystem actionFileSystem) {
+ @Nullable FileSystem actionFileSystem,
+ NestedSetExpander nestedSetExpander) {
return new ActionExecutionContext(
executor,
actionInputFileCache,
@@ -162,7 +169,8 @@
/*artifactExpander=*/ null,
env,
actionFileSystem,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ nestedSetExpander);
}
public ActionInputPrefetcher getActionInputPrefetcher() {
@@ -325,6 +333,10 @@
return actionKeyContext;
}
+ public NestedSetExpander getNestedSetExpander() {
+ return nestedSetExpander;
+ }
+
@Override
public void close() throws IOException {
fileOutErr.close();
@@ -352,7 +364,8 @@
artifactExpander,
env,
actionFileSystem,
- skyframeDepsResult);
+ skyframeDepsResult,
+ nestedSetExpander);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
index cd65b47..dfd0ad3 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD
@@ -15,6 +15,7 @@
"NestedSet.java",
"NestedSetBuilder.java",
"NestedSetCodecWithStore.java",
+ "NestedSetExpander.java",
"NestedSetStore.java",
"NestedSetView.java",
"NestedSetVisitor.java",
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java
index 0e683a4..25911c4 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java
@@ -301,7 +301,7 @@
* Returns an immutable list of all unique elements of the this set, similar to {@link #toList},
* but will propagate an {@code InterruptedException} if one is thrown.
*/
- public ImmutableList<E> toListInterruptibly() throws InterruptedException {
+ ImmutableList<E> toListInterruptibly() throws InterruptedException {
return toList(InterruptStrategy.PROPAGATE);
}
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetExpander.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetExpander.java
new file mode 100644
index 0000000..9e17577
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetExpander.java
@@ -0,0 +1,70 @@
+// Copyright 2020 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.collect.nestedset;
+
+import com.google.common.base.Stopwatch;
+import com.google.common.collect.ImmutableList;
+import com.google.common.util.concurrent.ListenableFuture;
+import java.time.Duration;
+
+/**
+ * Helper class to expand {@link NestedSet} instances which allows to plug in an extra callbacks for
+ * expansions waiting for a {@link ListenableFuture}.
+ */
+public class NestedSetExpander {
+ public static final NestedSetExpander NO_CALLBACKS =
+ new NestedSetExpander(
+ new ExpansionWithFutureCallbacks() {
+ @Override
+ public void onSuccessfulExpansion(Duration time, int size) {}
+
+ @Override
+ public void onInterruptedExpansion(Duration timeUntilInterrupted) {}
+ });
+
+ private final ExpansionWithFutureCallbacks expansionWithFutureCallbacks;
+
+ /** Callbacks invoked if we expand a {@link NestedSet} backed by a {@link ListenableFuture}. */
+ public interface ExpansionWithFutureCallbacks {
+ void onSuccessfulExpansion(Duration time, int size);
+
+ void onInterruptedExpansion(Duration timeUntilInterrupted);
+ }
+
+ public NestedSetExpander(ExpansionWithFutureCallbacks expansionWithFutureCallbacks) {
+ this.expansionWithFutureCallbacks = expansionWithFutureCallbacks;
+ }
+
+ /**
+ * Returns an immutable list of all unique elements of the the provided set, similar to {@link
+ * NestedSet#toList()}, but will propagate an {@code InterruptedException} if one is thrown.
+ */
+ public final <T> ImmutableList<? extends T> toListInterruptibly(NestedSet<? extends T> nestedSet)
+ throws InterruptedException {
+ if (!(nestedSet.rawChildren() instanceof ListenableFuture)) {
+ return nestedSet.toListInterruptibly();
+ }
+
+ Stopwatch stopwatch = Stopwatch.createStarted();
+ ImmutableList<? extends T> result;
+ try {
+ result = nestedSet.toListInterruptibly();
+ } catch (InterruptedException e) {
+ expansionWithFutureCallbacks.onInterruptedExpansion(stopwatch.elapsed());
+ throw e;
+ }
+ expansionWithFutureCallbacks.onSuccessfulExpansion(stopwatch.elapsed(), result.size());
+ return result;
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 009d49a..08164e8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -15,7 +15,6 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
-import com.google.common.base.Stopwatch;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
@@ -88,7 +87,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
-import java.time.Duration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -100,15 +98,12 @@
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/** Action that represents some kind of C++ compilation step. */
@ThreadCompatible
public class CppCompileAction extends AbstractAction implements IncludeScannable, CommandAction {
- private static final Logger logger = Logger.getLogger(CppCompileAction.class.getName());
- private static final Duration BLOCKED_NESTED_SET_EXPANSION_THRESHOLD = Duration.ofSeconds(5);
private static final PathFragment BUILD_PATH_FRAGMENT = PathFragment.create("BUILD");
private static final boolean VALIDATION_DEBUG_WARN = false;
@@ -597,7 +592,8 @@
// (transitive, which is a linear scan).
// We get a collection view of the NestedSet in a way that can throw an InterruptedException
// because a NestedSet may contain a future.
- for (Artifact module : modulesToListInterruptibly(transitive)) {
+ for (Artifact module :
+ actionExecutionContext.getNestedSetExpander().toListInterruptibly(transitive)) {
topLevel.remove(module);
}
}
@@ -620,32 +616,6 @@
return additionalInputs;
}
- private static ImmutableList<? extends Artifact> modulesToListInterruptibly(
- NestedSet<? extends Artifact> nestedSet) throws InterruptedException {
- Stopwatch blockedStopwatch = Stopwatch.createStarted();
- ImmutableList<? extends Artifact> modules;
- try {
- modules = nestedSet.toListInterruptibly();
- } catch (InterruptedException e) {
- Duration blockedDuration = blockedStopwatch.elapsed();
- if (BLOCKED_NESTED_SET_EXPANSION_THRESHOLD.compareTo(blockedDuration) < 0) {
- logger.info(
- String.format(
- "Spent %d milliseconds doing nested set expansion, interrupted",
- blockedDuration.toMillis()));
- }
- throw e;
- }
- Duration blockedDuration = blockedStopwatch.elapsed();
- if (BLOCKED_NESTED_SET_EXPANSION_THRESHOLD.compareTo(blockedDuration) < 0) {
- logger.info(
- String.format(
- "Spent %d milliseconds doing nested set expansion, %d elements",
- blockedDuration.toMillis(), modules.size()));
- }
- return modules;
- }
-
@Override
public Artifact getPrimaryInput() {
return getSourceFile();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
index df7ec7e..bf6873c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
@@ -38,6 +38,7 @@
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.cmdline.LabelConstants;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.concurrent.Uninterruptibles;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
@@ -190,7 +191,8 @@
mutableArtifactFactorySupplier,
new ConfiguredTargetProgressReceiver(),
/*nonexistentFileReceiver=*/ null,
- managedDirectoriesKnowledge);
+ managedDirectoriesKnowledge,
+ NestedSetExpander.NO_CALLBACKS);
this.diffAwarenessManager = new DiffAwarenessManager(diffAwarenessFactories);
this.customDirtinessCheckers = customDirtinessCheckers;
this.managedDirectoriesKnowledge = managedDirectoriesKnowledge;
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 dffc60a..81b1cbd 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
@@ -82,6 +82,7 @@
import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.concurrent.ExecutorUtil;
import com.google.devtools.build.lib.concurrent.Sharder;
import com.google.devtools.build.lib.concurrent.ThrowableRecordingRunnableWrapper;
@@ -224,15 +225,19 @@
private boolean bazelRemoteExecutionEnabled;
+ private final NestedSetExpander nestedSetExpander;
+
SkyframeActionExecutor(
ActionKeyContext actionKeyContext,
AtomicReference<ActionExecutionStatusReporter> statusReporterRef,
Supplier<ImmutableList<Root>> sourceRootSupplier,
- Function<PathFragment, SourceArtifact> sourceArtifactFactory) {
+ Function<PathFragment, SourceArtifact> sourceArtifactFactory,
+ NestedSetExpander nestedSetExpander) {
this.actionKeyContext = actionKeyContext;
this.statusReporterRef = statusReporterRef;
this.sourceRootSupplier = sourceRootSupplier;
this.sourceArtifactFactory = sourceArtifactFactory;
+ this.nestedSetExpander = nestedSetExpander;
}
/**
@@ -672,7 +677,8 @@
topLevelFilesets,
new ArtifactExpanderImpl(expandedInputs, expandedFilesets),
actionFileSystem,
- skyframeDepsResult);
+ skyframeDepsResult,
+ nestedSetExpander);
}
/**
@@ -832,7 +838,8 @@
selectEventHandler(progressEventBehavior),
clientEnv,
env,
- actionFileSystem);
+ actionFileSystem,
+ nestedSetExpander);
if (actionFileSystem != null) {
// Note that when not using ActionFS, a global setup of the parent directories of the OutErr
// streams is sufficient.
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 ef4cb7b..4d60e42 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
@@ -97,6 +97,7 @@
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.concurrent.NamedForkJoinPool;
import com.google.devtools.build.lib.concurrent.ThreadSafety;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible;
@@ -397,7 +398,8 @@
MutableArtifactFactorySupplier artifactResolverSupplier,
@Nullable ConfiguredTargetProgressReceiver configuredTargetProgress,
@Nullable NonexistentFileReceiver nonexistentFileReceiver,
- @Nullable ManagedDirectoriesKnowledge managedDirectoriesKnowledge) {
+ @Nullable ManagedDirectoriesKnowledge managedDirectoriesKnowledge,
+ NestedSetExpander nestedSetExpander) {
// Strictly speaking, these arguments are not required for initialization, but all current
// callsites have them at hand, so we might as well set them during construction.
this.skyframeExecutorConsumerOnInit = skyframeExecutorConsumerOnInit;
@@ -427,7 +429,11 @@
this.defaultBuildOptions = defaultBuildOptions;
this.skyframeActionExecutor =
new SkyframeActionExecutor(
- actionKeyContext, statusReporterRef, this::getPathEntries, this::createSourceArtifact);
+ actionKeyContext,
+ statusReporterRef,
+ this::getPathEntries,
+ this::createSourceArtifact,
+ nestedSetExpander);
this.skyframeBuildView =
new SkyframeBuildView(
directories,
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java
index 6853c72..bf81f3d 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java
@@ -23,6 +23,7 @@
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.actions.util.DummyExecutor;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.exec.SingleBuildFileCache;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
import com.google.devtools.build.lib.testutil.Scratch;
@@ -71,7 +72,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
index 6d2f8cb..e59af3c 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
@@ -66,6 +66,7 @@
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -165,7 +166,8 @@
? createDummyArtifactExpander()
: ActionInputHelper.actionGraphArtifactExpander(actionGraph),
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
public static ActionExecutionContext createContext(ExtendedEventHandler eventHandler) {
@@ -183,7 +185,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
createDummyArtifactExpander(),
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
public static ActionExecutionContext createContextForInputDiscovery(
@@ -193,7 +196,8 @@
FileOutErr fileOutErr,
Path execRoot,
MetadataHandler metadataHandler,
- BuildDriver buildDriver) {
+ BuildDriver buildDriver,
+ NestedSetExpander nestedSetExpander) {
return ActionExecutionContext.forInputDiscovery(
executor,
new SingleBuildFileCache(execRoot.getPathString(), execRoot.getFileSystem()),
@@ -205,7 +209,8 @@
eventHandler,
ImmutableMap.of(),
new BlockingSkyFunctionEnvironment(buildDriver, eventHandler),
- /*actionFileSystem=*/ null);
+ /*actionFileSystem=*/ null,
+ nestedSetExpander);
}
private static ArtifactExpander createDummyArtifactExpander() {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java
index da0d408..ed3549b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java
@@ -29,6 +29,7 @@
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.analysis.util.ActionTester;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.BinTools;
import com.google.devtools.build.lib.exec.util.TestExecutorBuilder;
@@ -76,7 +77,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
protected void checkNoInputsByDefault() {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java
index 098dafe..7abd5c3 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java
@@ -37,6 +37,7 @@
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.BinTools;
@@ -215,7 +216,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
artifactExpander,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
private enum KeyAttributes {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java
index 60655e2..57559c5 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java
@@ -25,6 +25,7 @@
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.util.TestExecutorBuilder;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationDepsUtils;
@@ -96,7 +97,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null));
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS));
assertThat(actionResult.spawnResults()).isEmpty();
assertThat(output.isSymbolicLink()).isTrue();
assertThat(output.resolveSymbolicLinks()).isEqualTo(input);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
index 6d3518c..6208962 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
@@ -30,6 +30,7 @@
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ServerDirectories;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.BinTools;
import com.google.devtools.build.lib.exec.util.TestExecutorBuilder;
@@ -202,7 +203,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
private void executeTemplateExpansion(String expected) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index e14b09f..9531202 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -105,6 +105,7 @@
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -2288,7 +2289,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
artifactExpander,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult*/ null);
+ /*skyframeDepsResult*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
index c1e0d02..49f6d9c 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
@@ -46,6 +46,7 @@
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.clock.Clock;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventKind;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -107,7 +108,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
this.spawnActionContext = spawnActionContext;
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
index 98d2f4e..9d9e1af2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
@@ -25,6 +25,7 @@
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.actions.util.DummyExecutor;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.testutil.FoundationTestCase;
import com.google.devtools.build.lib.util.Fingerprint;
@@ -130,7 +131,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java
index 5ca9d48..01f355f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java
@@ -32,6 +32,7 @@
import com.google.devtools.build.lib.analysis.util.AnalysisTestUtil;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.BinTools;
@@ -97,7 +98,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
/*artifactExpander=*/ null,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index 0d5c8ed..8a165a4 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -40,6 +40,7 @@
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.RepositoryName;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
@@ -802,7 +803,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
DUMMY_ARTIFACT_EXPANDER,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
ByteArrayOutputStream moduleMapStream = new ByteArrayOutputStream();
ByteArrayOutputStream umbrellaHeaderStream = new ByteArrayOutputStream();
moduleMapAction.newDeterministicWriter(dummyActionExecutionContext)
@@ -855,7 +857,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
DUMMY_ARTIFACT_EXPANDER,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
ByteArrayOutputStream moduleMapStream = new ByteArrayOutputStream();
ByteArrayOutputStream umbrellaHeaderStream = new ByteArrayOutputStream();
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 4c9fa7a..b9f28a1 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
@@ -64,6 +64,7 @@
import com.google.devtools.build.lib.clock.Clock;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.events.StoredEventHandler;
@@ -219,7 +220,8 @@
actionKeyContext,
new AtomicReference<>(statusReporter),
/*sourceRootSupplier=*/ () -> ImmutableList.of(),
- /*sourceArtifactFactory=*/ unused -> null);
+ /*sourceArtifactFactory=*/ unused -> null,
+ NestedSetExpander.NO_CALLBACKS);
Path actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/");
skyframeActionExecutor.setActionLogBufferPathGenerator(
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
index f655b68..79de9aa 100644
--- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -40,6 +40,7 @@
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.events.PrintingEventHandler;
import com.google.devtools.build.lib.events.Reporter;
@@ -207,7 +208,8 @@
/*topLevelFilesets=*/ ImmutableMap.of(),
SIMPLE_ARTIFACT_EXPANDER,
/*actionFileSystem=*/ null,
- /*skyframeDepsResult=*/ null);
+ /*skyframeDepsResult=*/ null,
+ NestedSetExpander.NO_CALLBACKS);
}
@Test