Remove blaze start-up flag `UsePooledSkyKeyInterningFlag`.
This commit also fixes some trivial typos in shell integration tests.
PiperOrigin-RevId: 518379794
Change-Id: Iee6d06afb9468cc9d614610cd1719864dfe3fdd1
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 1549b80..8bc5e72 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
@@ -226,7 +226,8 @@
inconsistencyReceiver,
trackIncrementalState ? DEFAULT_EVENT_FILTER_WITH_ACTIONS : EventFilter.NO_STORAGE,
emittedEventState,
- trackIncrementalState);
+ trackIncrementalState,
+ /* usePooledSkyKeyInterning= */ true);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index 49d56a3..63c06e3 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -141,6 +141,7 @@
private final int nonSkyframeGlobbingThreads;
@VisibleForTesting final ForkJoinPool forkJoinPoolForNonSkyframeGlobbing;
private final int skyframeThreads;
+ private final boolean usePooledSkyKeyInterning;
/** Abstract base class of a builder for {@link PackageLoader} instances. */
public abstract static class Builder {
@@ -157,6 +158,7 @@
List<PrecomputedValue.Injected> extraPrecomputedValues = new ArrayList<>();
int nonSkyframeGlobbingThreads = 1;
int skyframeThreads = 1;
+ boolean usePooledSkyKeyInterning = true;
protected Builder(
Root workspaceDir,
@@ -242,6 +244,12 @@
return this;
}
+ @CanIgnoreReturnValue
+ public Builder disablePooledSkyKeyInterning() {
+ this.usePooledSkyKeyInterning = false;
+ return this;
+ }
+
/** Throws {@link IllegalArgumentException} if builder args are incomplete/inconsistent. */
protected void validate() {
if (starlarkSemantics == null) {
@@ -273,6 +281,7 @@
NamedForkJoinPool.newNamedPool(
"package-loader-globbing-pool", builder.nonSkyframeGlobbingThreads);
this.skyframeThreads = builder.skyframeThreads;
+ this.usePooledSkyKeyInterning = builder.usePooledSkyKeyInterning;
this.directories = builder.directories;
this.hashFunction = builder.workspaceDir.getFileSystem().getDigestFunction().getHashFunction();
@@ -408,7 +417,8 @@
GraphInconsistencyReceiver.THROWING,
EventFilter.FULL_STORAGE,
new NestedSetVisitor.VisitedState(),
- /*keepEdges=*/ false);
+ /* keepEdges= */ false,
+ usePooledSkyKeyInterning);
}
protected abstract ImmutableList<EnvironmentExtension> getEnvironmentExtensions();
diff --git a/src/main/java/com/google/devtools/build/skyframe/BUILD b/src/main/java/com/google/devtools/build/skyframe/BUILD
index 130c650..eb0b4ce 100644
--- a/src/main/java/com/google/devtools/build/skyframe/BUILD
+++ b/src/main/java/com/google/devtools/build/skyframe/BUILD
@@ -16,7 +16,6 @@
"SkyFunctionName.java",
"SkyKey.java",
"SkyValue.java",
- "UsePooledSkyKeyInterningFlag.java",
"Version.java",
]
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
index 3fe469a..bb67bd2 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
@@ -26,15 +26,19 @@
/** Creates a new in-memory graph suitable for incremental builds. */
static InMemoryGraph create() {
- return new InMemoryGraphImpl();
+ return new InMemoryGraphImpl(/* usePooledSkyKeyInterning= */ true);
+ }
+
+ static InMemoryGraph create(boolean usePooledSkyKeyInterning) {
+ return new InMemoryGraphImpl(usePooledSkyKeyInterning);
}
/**
* Creates a new in-memory graph that discards graph edges to save memory and cannot be used for
* incremental builds.
*/
- static InMemoryGraph createEdgeless() {
- return new EdgelessInMemoryGraphImpl();
+ static InMemoryGraph createEdgeless(boolean usePooledSkyKeyInterning) {
+ return new EdgelessInMemoryGraphImpl(usePooledSkyKeyInterning);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
index 0c44441..4965a39 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.skyframe;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
import com.google.devtools.build.lib.profiler.AutoProfiler;
import com.google.devtools.build.lib.profiler.GoogleAutoProfilerUtils;
@@ -44,21 +43,22 @@
protected final ConcurrentHashMap<SkyKey, InMemoryNodeEntry> nodeMap;
private final NodeBatch getBatch;
private final NodeBatch createIfAbsentBatch;
-
- // TODO(b/250641010): Remove this class member along with the startup flag.
private final boolean usePooledSkyKeyInterning;
InMemoryGraphImpl() {
this(/* initialCapacity= */ 1 << 10);
}
- @VisibleForTesting
- public InMemoryGraphImpl(boolean usePooledSkyKeyInterning) {
+ /**
+ * For some shell integration tests, we don't want to apply {@link SkyKeyInterner} created and
+ * bind {@code SkyKeyInterner#globalPool} to the second {@link InMemoryGraph}.
+ */
+ InMemoryGraphImpl(boolean usePooledSkyKeyInterning) {
this(/* initialCapacity= */ 1 << 10, usePooledSkyKeyInterning);
}
protected InMemoryGraphImpl(int initialCapacity) {
- this(initialCapacity, UsePooledSkyKeyInterningFlag.usePooledSkyKeyInterningFlag());
+ this(initialCapacity, /* usePooledSkyKeyInterning= */ true);
}
private InMemoryGraphImpl(int initialCapacity, boolean usePooledSkyKeyInterning) {
@@ -217,7 +217,7 @@
@Override
public void cleanupPool() {
if (!usePooledSkyKeyInterning) {
- // No clean up is needed when UseSkyKeyInternerFlag startup flag is off.
+ // No clean up is needed when `usePooledSkyKeyInterning` is false for shell integration tests.
return;
}
try (AutoProfiler ignored =
@@ -231,11 +231,6 @@
static final class EdgelessInMemoryGraphImpl extends InMemoryGraphImpl {
- public EdgelessInMemoryGraphImpl() {
- super();
- }
-
- @VisibleForTesting
public EdgelessInMemoryGraphImpl(boolean usePooledSkyKeyInterning) {
super(usePooledSkyKeyInterning);
}
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
index f0ebf4d..1081fac 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
@@ -92,7 +92,8 @@
GraphInconsistencyReceiver.THROWING,
EventFilter.FULL_STORAGE,
new NestedSetVisitor.VisitedState(),
- /*keepEdges=*/ true);
+ /* keepEdges= */ true,
+ /* usePooledSkyKeyInterning= */ true);
}
public InMemoryMemoizingEvaluator(
@@ -102,13 +103,17 @@
GraphInconsistencyReceiver graphInconsistencyReceiver,
EventFilter eventFilter,
NestedSetVisitor.VisitedState emittedEventState,
- boolean keepEdges) {
+ boolean keepEdges,
+ boolean usePooledSkyKeyInterning) {
this.skyFunctions = ImmutableMap.copyOf(skyFunctions);
this.differencer = Preconditions.checkNotNull(differencer);
this.progressReceiver = new DirtyTrackingProgressReceiver(progressReceiver);
this.graphInconsistencyReceiver = Preconditions.checkNotNull(graphInconsistencyReceiver);
this.eventFilter = eventFilter;
- this.graph = keepEdges ? InMemoryGraph.create() : InMemoryGraph.createEdgeless();
+ this.graph =
+ keepEdges
+ ? InMemoryGraph.create(usePooledSkyKeyInterning)
+ : InMemoryGraph.createEdgeless(usePooledSkyKeyInterning);
this.emittedEventState = emittedEventState;
this.keepEdges = keepEdges;
}
diff --git a/src/main/java/com/google/devtools/build/skyframe/UsePooledSkyKeyInterningFlag.java b/src/main/java/com/google/devtools/build/skyframe/UsePooledSkyKeyInterningFlag.java
deleted file mode 100644
index 3178703..0000000
--- a/src/main/java/com/google/devtools/build/skyframe/UsePooledSkyKeyInterningFlag.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2023 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.skyframe;
-
-import java.util.Objects;
-
-/**
- * A startup flag to decide whether some {@link SkyKey}s will use {@code SkyKeyInterner} or just the
- * regular bazel weak interner.
- *
- * <p>When this flag is true, {@code SkyKeyInterner} will be applied for some {@link SkyKey}s so
- * that they are able to switch between interning the instances between the regular bazel weak
- * interner and the static global pool.
- *
- * <p>Applying {@code SkyKeyInterner} can reduce memory overhead of having duplicate {@link SkyKey}
- * instances in both weak interner and some other storage.
- */
-// TODO(b/250641010): This flag is temporary to facilitate a controlled rollout. So it should be
-// removed after the new pooled interning is fully released and stable.
-public final class UsePooledSkyKeyInterningFlag {
-
- private static final boolean USE_POOLED_SKY_KEY_INTERNER =
- Objects.equals(System.getProperty("BAZEL_USE_POOLED_SKY_KEY_INTERNER"), "1");
-
- public static boolean usePooledSkyKeyInterningFlag() {
- return USE_POOLED_SKY_KEY_INTERNER;
- }
-
- private UsePooledSkyKeyInterningFlag() {}
-}
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 b4d8cd5..546a225 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
@@ -275,7 +275,7 @@
null,
null,
null,
- /*packageProgress=*/ null,
+ /* packageProgress= */ null,
PackageFunction.ActionOnIOExceptionReadingBuildFile.UseOriginalIOException
.INSTANCE,
GlobbingStrategy.SKYFRAME_HYBRID,
@@ -295,7 +295,7 @@
.builder(directories)
.build(TestRuleClassProvider.getRuleClassProvider(), fileSystem),
directories,
- /*bzlLoadFunctionForInlining=*/ null))
+ /* bzlLoadFunctionForInlining= */ null))
.put(
SkyFunctions.EXTERNAL_PACKAGE,
new ExternalPackageFunction(
@@ -306,14 +306,15 @@
.put(
SkyFunctions.ARTIFACT_NESTED_SET,
ArtifactNestedSetFunction.createInstance(
- /*valueBasedChangePruningEnabled=*/ true))
+ /* valueBasedChangePruningEnabled= */ true))
.buildOrThrow(),
differencer,
evaluationProgressReceiver,
graphInconsistencyReceiver,
EventFilter.FULL_STORAGE,
new NestedSetVisitor.VisitedState(),
- /*keepEdges=*/ true);
+ /* keepEdges= */ true,
+ /* usePooledSkyKeyInterning= */ true);
PrecomputedValue.BUILD_ID.set(differencer, UUID.randomUUID());
PrecomputedValue.ACTION_ENV.set(differencer, ImmutableMap.of());
PrecomputedValue.PATH_PACKAGE_LOCATOR.set(differencer, pkgLocator.get());
diff --git a/src/test/java/com/google/devtools/build/skyframe/InMemoryGraphTest.java b/src/test/java/com/google/devtools/build/skyframe/InMemoryGraphTest.java
index 4540a98..77b0d66 100644
--- a/src/test/java/com/google/devtools/build/skyframe/InMemoryGraphTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/InMemoryGraphTest.java
@@ -38,7 +38,7 @@
@Override
protected void makeGraph() {
- graph = new InMemoryGraphImpl(/* usePooledSkyKeyInterning= */ true);
+ graph = new InMemoryGraphImpl();
}
@Override
diff --git a/src/test/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluatorTest.java
index 685049c..17975b4 100644
--- a/src/test/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluatorTest.java
@@ -35,6 +35,7 @@
graphInconsistencyReceiver,
eventFilter,
emittedEventState,
- /*keepEdges=*/ true);
+ /* keepEdges= */ true,
+ /* usePooledSkyKeyInterning= */ true);
}
}
diff --git a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
index 9e6bc63..f3b6572 100644
--- a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java
@@ -1004,7 +1004,10 @@
throws Exception {
Assume.assumeTrue(keepGoing || keepEdges);
- graph = keepEdges ? InMemoryGraph.create() : InMemoryGraph.createEdgeless();
+ graph =
+ keepEdges
+ ? InMemoryGraph.create(/* usePooledSkyKeyInterning= */ true)
+ : InMemoryGraph.createEdgeless(/* usePooledSkyKeyInterning= */ true);
SkyKey catastropheKey = GraphTester.toSkyKey("catastrophe");
SkyKey otherKey = GraphTester.toSkyKey("someKey");
diff --git a/src/test/shell/integration/discard_graph_edges_test.sh b/src/test/shell/integration/discard_graph_edges_test.sh
index d9d1019..07781db 100755
--- a/src/test/shell/integration/discard_graph_edges_test.sh
+++ b/src/test/shell/integration/discard_graph_edges_test.sh
@@ -260,7 +260,7 @@
local edgeless_entry_count="$(extract_histogram_count "$histo_file" \
'EdgelessInMemoryNodeEntry')"
[[ "$edgeless_entry_count" -eq 0 ]] \
- || fail "$edgless_entry_count EdgelessInMemoryNodeEntry instances found in build keeping edges"
+ || fail "$edgeless_entry_count EdgelessInMemoryNodeEntry instances found in build keeping edges"
local node_entry_count="$(extract_histogram_count "$histo_file" \
'\.InMemoryNodeEntry')"
[[ "$node_entry_count" -ge 100 ]] \
diff --git a/src/test/shell/integration/starlark_configurations_test.sh b/src/test/shell/integration/starlark_configurations_test.sh
index fb83279..37a8add 100755
--- a/src/test/shell/integration/starlark_configurations_test.sh
+++ b/src/test/shell/integration/starlark_configurations_test.sh
@@ -112,8 +112,8 @@
#### TESTS #############################################################
function test_default_flag() {
- local -r pkg=$FUNCNAME
- mkdir -p $pkg
+ local -r pkg=$FUNCNAME
+ mkdir -p $pkg
write_build_setting_bzl