diff --git a/src/main/java/com/google/devtools/build/lib/actions/BUILD b/src/main/java/com/google/devtools/build/lib/actions/BUILD index cafd5cc87a09da..0f99219b5f633f 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/BUILD +++ b/src/main/java/com/google/devtools/build/lib/actions/BUILD @@ -248,7 +248,6 @@ java_library( srcs = ["FilesetOutputSymlink.java"], deps = [ ":has_digest", - "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//third_party:auto_value", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD index e52ff6e3c84ee9..17d20b01915327 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD @@ -902,7 +902,6 @@ java_library( name = "package_specification_provider", srcs = ["PackageSpecificationProvider.java"], deps = [ - ":transitive_info_provider", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/packages", ], @@ -1234,7 +1233,6 @@ java_library( ":actions/file_write_action_context", "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/actions:artifacts", - "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//third_party:guava", "//third_party:jsr305", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD index e7d0c41e9284dd..889a463f1f6af9 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/BUILD @@ -48,7 +48,6 @@ java_library( "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", "//src/main/protobuf:failure_details_java_proto", "//third_party:guava", ], diff --git a/src/main/java/com/google/devtools/build/lib/bazel/debug/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/debug/BUILD index 17d3b7c3f2170f..294dc224d600b0 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/debug/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/debug/BUILD @@ -55,7 +55,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception", "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code", - "//src/main/java/com/google/devtools/build/lib/util:exit_code", "//src/main/java/com/google/devtools/build/lib/util/io", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/common/options", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/lexer/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/lexer/BUILD index e0fd899ade9c97..275555addc6702 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/lexer/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/lexer/BUILD @@ -16,7 +16,6 @@ java_library( deps = [ "//src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/file", "//src/main/java/com/google/devtools/build/lib/util", - "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//third_party:guava", "//third_party:jsr305", ], diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/parser/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/parser/BUILD index 612d60243f8075..056f5cd117460e 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/parser/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/parser/BUILD @@ -32,7 +32,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/file", "//src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/lexer", "//src/main/java/com/google/devtools/build/lib/collect", - "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//third_party:error_prone_annotations", diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD index f290d931d0c8a1..8ba17a34b2c293 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD @@ -16,7 +16,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto", "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception", "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code", - "//src/main/java/com/google/devtools/build/lib/util:exit_code", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:failure_details_java_proto", "//third_party:flogger", diff --git a/src/main/java/com/google/devtools/build/lib/outputfilter/BUILD b/src/main/java/com/google/devtools/build/lib/outputfilter/BUILD index 117592b63783df..aa578298e8a9f2 100644 --- a/src/main/java/com/google/devtools/build/lib/outputfilter/BUILD +++ b/src/main/java/com/google/devtools/build/lib/outputfilter/BUILD @@ -18,7 +18,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/pkgcache", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/QueryTransitivePackagePreloader.java b/src/main/java/com/google/devtools/build/lib/pkgcache/QueryTransitivePackagePreloader.java index ccafa75f9c146a..1f8705a17727f1 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/QueryTransitivePackagePreloader.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/QueryTransitivePackagePreloader.java @@ -17,8 +17,8 @@ import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.skyframe.TransitiveTargetKey; import com.google.devtools.build.lib.skyframe.TransitiveTargetValue; -import com.google.devtools.build.skyframe.BuildDriver; import com.google.devtools.build.skyframe.EvaluationContext; +import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.SkyKey; import java.util.ArrayList; import java.util.List; @@ -30,13 +30,13 @@ * that benefits from loading parallelism. */ public class QueryTransitivePackagePreloader { - private final Supplier buildDriverSupplier; + private final Supplier memoizingEvaluatorSupplier; private final Supplier evaluationContextBuilderSupplier; public QueryTransitivePackagePreloader( - Supplier buildDriverSupplier, + Supplier memoizingEvaluatorSupplier, Supplier evaluationContextBuilderSupplier) { - this.buildDriverSupplier = buildDriverSupplier; + this.memoizingEvaluatorSupplier = memoizingEvaluatorSupplier; this.evaluationContextBuilderSupplier = evaluationContextBuilderSupplier; } @@ -59,6 +59,6 @@ public void preloadTransitiveTargets( .setEventHandler(eventHandler) .setUseForkJoinPool(true) .build(); - buildDriverSupplier.get().evaluate(valueNames, evaluationContext); + memoizingEvaluatorSupplier.get().evaluate(valueNames, evaluationContext); } } diff --git a/src/main/java/com/google/devtools/build/lib/platform/BUILD b/src/main/java/com/google/devtools/build/lib/platform/BUILD index a605f10c42871e..9f5620b594ed02 100644 --- a/src/main/java/com/google/devtools/build/lib/platform/BUILD +++ b/src/main/java/com/google/devtools/build/lib/platform/BUILD @@ -61,7 +61,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/jni", - "//src/main/java/com/google/devtools/build/lib/util:os", "//third_party:flogger", "//third_party:jsr305", ], diff --git a/src/main/java/com/google/devtools/build/lib/profiler/callcounts/BUILD b/src/main/java/com/google/devtools/build/lib/profiler/callcounts/BUILD index 266c019c25f17d..bde1ed3a2c4dcd 100644 --- a/src/main/java/com/google/devtools/build/lib/profiler/callcounts/BUILD +++ b/src/main/java/com/google/devtools/build/lib/profiler/callcounts/BUILD @@ -24,7 +24,6 @@ java_library( ":callcounts", "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", ], diff --git a/src/main/java/com/google/devtools/build/lib/rules/BUILD b/src/main/java/com/google/devtools/build/lib/rules/BUILD index fe48f9fce40142..68998237c4be70 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/BUILD @@ -279,9 +279,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", - "//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_provider", - "//src/main/java/com/google/devtools/build/lib/analysis:visibility_provider", - "//src/main/java/com/google/devtools/build/lib/analysis:visibility_provider_impl", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/packages", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD index 0b268645451093..3bba5afe693154 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD @@ -28,8 +28,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", "//src/main/java/com/google/devtools/build/lib/analysis:rule_definition_environment", "//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_provider", - "//src/main/java/com/google/devtools/build/lib/analysis:visibility_provider", - "//src/main/java/com/google/devtools/build/lib/analysis:visibility_provider_impl", "//src/main/java/com/google/devtools/build/lib/analysis:xcode_config_event", "//src/main/java/com/google/devtools/build/lib/analysis/starlark/annotations", "//src/main/java/com/google/devtools/build/lib/cmdline", diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD index 8dd42bf913e436..6669ae664fa531 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD @@ -40,7 +40,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:template_variable_info", "//src/main/java/com/google/devtools/build/lib/analysis:test/instrumented_files_info", "//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_collection", - "//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_provider", "//src/main/java/com/google/devtools/build/lib/analysis/platform", "//src/main/java/com/google/devtools/build/lib/analysis/starlark/annotations", "//src/main/java/com/google/devtools/build/lib/bazel/rules/cpp:bazel_cpp_semantics", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java index d9c57bb7f23403..4b7bf51ced805a 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java @@ -383,7 +383,7 @@ public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult opti findConfigurations(CommandEnvironment env) { InMemoryMemoizingEvaluator evaluator = (InMemoryMemoizingEvaluator) - env.getRuntime().getWorkspace().getSkyframeExecutor().getEvaluatorForTesting(); + env.getRuntime().getWorkspace().getSkyframeExecutor().getEvaluator(); return evaluator.getDoneValues().entrySet().stream() .filter(e -> SkyFunctions.BUILD_CONFIGURATION.equals(e.getKey().functionName())) .collect( diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD index f88e38f1bbe451..baf318b7e9b631 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BUILD @@ -22,7 +22,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster", "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception", "//src/main/java/com/google/devtools/build/lib/util:debug-logger-configurator", - "//src/main/java/com/google/devtools/build/lib/util:process", "//src/main/java/com/google/devtools/build/lib/util:string", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/common/options", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD index 0affc14fb66668..bfaa7cefc665da 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD +++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/BUILD @@ -29,7 +29,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/util:command", "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code", - "//src/main/java/com/google/devtools/build/lib/util:interrupted_failure_details", "//src/main/java/com/google/devtools/build/lib/util/io:out-err", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/common/options", diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD index 493cd843fa0bb8..56f846845a9d5f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD @@ -416,7 +416,6 @@ java_library( ":output_store", ":tree_artifact_value", "//src/main/java/com/google/devtools/build/lib/actions", - "//src/main/java/com/google/devtools/build/lib/actions:action_lookup_data", "//src/main/java/com/google/devtools/build/lib/actions:artifacts", "//src/main/java/com/google/devtools/build/lib/actions:file_metadata", "//src/main/java/com/google/devtools/build/lib/actions:fileset_output_symlink", @@ -525,7 +524,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions:artifacts", "//src/main/java/com/google/devtools/build/lib/bugreport", "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", @@ -830,7 +828,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/packages", - "//src/main/java/com/google/devtools/build/lib/packages/semantics", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:serialization-constant", "//src/main/java/com/google/devtools/build/lib/vfs", @@ -1093,7 +1090,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", - "//third_party:flogger", "//third_party:guava", "//third_party:jsr305", ], @@ -1188,7 +1184,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", - "//third_party:jsr305", ], ) @@ -1275,7 +1270,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", - "//third_party:jsr305", ], ) @@ -1775,7 +1769,6 @@ java_library( "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", - "//third_party:jsr305", ], ) @@ -2380,7 +2373,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/pkgcache", - "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", @@ -2395,7 +2387,6 @@ java_library( ":target_pattern_value", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/pkgcache", - "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", @@ -2457,7 +2448,6 @@ java_library( "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", - "//third_party:jsr305", ], ) @@ -2469,7 +2459,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/packages", - "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", ], @@ -2487,7 +2476,6 @@ java_library( "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", - "//third_party:jsr305", ], ) @@ -2498,7 +2486,6 @@ java_library( ":sky_functions", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/concurrent", - "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", ], @@ -2587,7 +2574,6 @@ java_library( name = "transitive_target_value", srcs = ["TransitiveTargetValue.java"], deps = [ - "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/concurrent", 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 c8700bd97e6dcd..e0fa360f11efa5 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 @@ -87,7 +87,6 @@ import com.google.devtools.build.lib.vfs.ModifiedFileSet; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.RootedPath; -import com.google.devtools.build.skyframe.BuildDriver; import com.google.devtools.build.skyframe.Differencer; import com.google.devtools.build.skyframe.EvaluationContext; import com.google.devtools.build.skyframe.GraphInconsistencyReceiver; @@ -96,7 +95,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator.EvaluatorSupplier; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -203,11 +201,6 @@ private SequencedSkyframeExecutor( this.workspaceInfoFromDiffReceiver = workspaceInfoFromDiffReceiver; } - @Override - protected BuildDriver createBuildDriver() { - return new SequentialBuildDriver(memoizingEvaluator); - } - @Override public void resetEvaluator() { super.resetEvaluator(); @@ -498,7 +491,7 @@ private void handleDiffsWithMissingDiffInformation( .setNumThreads(DEFAULT_THREAD_COUNT) .setEventHandler(eventHandler) .build(); - getDriver().evaluate(ImmutableList.of(), evaluationContext); + memoizingEvaluator.evaluate(ImmutableList.of(), evaluationContext); FilesystemValueChecker fsvc = new FilesystemValueChecker(tsgm, /* lastExecutionTimeRange= */ null, fsvcThreads); @@ -571,7 +564,7 @@ private void handleDiffsWithMissingDiffInformation( tmpExternalFilesHelper, EnumSet.of(FileType.EXTERNAL))); } handleChangedFiles( - ImmutableList.of(), + ImmutableList.of(), batchDirtyResult, batchDirtyResult.getNumKeysChecked(), /*managedDirectoriesChanged=*/ false); @@ -890,7 +883,7 @@ protected void dropConfiguredTargetsNow(final ExtendedEventHandler eventHandler) .setNumThreads(ResourceUsage.getAvailableProcessors()) .setEventHandler(eventHandler) .build(); - getDriver().evaluate(ImmutableList.of(), evaluationContext); + memoizingEvaluator.evaluate(ImmutableList.of(), evaluationContext); return null; }); } catch (Exception e) { @@ -1017,7 +1010,7 @@ private SkyValue evaluateSingleValue(SkyKey key, ExtendedEventHandler eventHandl .setNumThreads(DEFAULT_THREAD_COUNT) .setEventHandler(eventHandler) .build(); - return getDriver().evaluate(ImmutableSet.of(key), evaluationContext).get(key); + return memoizingEvaluator.evaluate(ImmutableSet.of(key), evaluationContext).get(key); } public static Builder builder() { 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 1cba62d86fca39..e3ebb9b5de5abd 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 @@ -187,7 +187,6 @@ import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.lib.vfs.UnixGlob; -import com.google.devtools.build.skyframe.BuildDriver; import com.google.devtools.build.skyframe.CycleInfo; import com.google.devtools.build.skyframe.CyclesReporter; import com.google.devtools.build.skyframe.Differencer; @@ -297,8 +296,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory, Configur private final SkyframeBuildView skyframeBuildView; private ActionLogBufferPathGenerator actionLogBufferPathGenerator; - private BuildDriver buildDriver; - private final Consumer skyframeExecutorConsumerOnInit; // AtomicReferences are used here as mutable boxes shared with value builders. @@ -439,7 +436,8 @@ protected SkyframeExecutor( this.packageManager = new SkyframePackageManager( new SkyframePackageLoader(), - new QueryTransitivePackagePreloader(this::getDriver, this::newEvaluationContextBuilder), + new QueryTransitivePackagePreloader( + () -> memoizingEvaluator, this::newEvaluationContextBuilder), syscalls, pkgLocator, numPackagesLoaded); @@ -744,10 +742,6 @@ public void drainChangedFiles() { incrementalBuildMonitor = null; } - public final BuildDriver getDriver() { - return buildDriver; - } - /** * Was there an analysis-invalidating change, like a configuration option changing, causing a * non-incremental analysis phase to be performed. Calling this resets the state to false. @@ -811,7 +805,6 @@ protected final void init() { DEFAULT_FILTER_WITH_ACTIONS, emittedEventState, tracksStateForIncrementality()); - buildDriver = createBuildDriver(); skyframeExecutorConsumerOnInit.accept(this); } @@ -879,9 +872,6 @@ public void postLoggingStatsWhenCrashing(ExtendedEventHandler eventHandler) { protected abstract Differencer evaluatorDiffer(); - @ForOverride - protected abstract BuildDriver createBuildDriver(); - /** Clear any configured target data stored outside Skyframe. */ public void handleAnalysisInvalidatingChange() { logger.atInfo().log("Dropping configured target data"); @@ -1267,7 +1257,7 @@ private Map getArtifactRoots( .build(); synchronized (valueLookupLock) { - result = buildDriver.evaluate(packageKeys.values(), evaluationContext); + result = memoizingEvaluator.evaluate(packageKeys.values(), evaluationContext); } if (result.hasError()) { @@ -1630,7 +1620,7 @@ public EvaluationResult buildArtifacts( .setEventHandler(reporter) .setExecutionPhase() .build(); - return buildDriver.evaluate( + return memoizingEvaluator.evaluate( Iterables.concat(Artifact.keys(artifactsToBuild), targetKeys, aspectKeys, testKeys), evaluationContext); } finally { @@ -1653,12 +1643,7 @@ public void prepareSkyframeActionExecutorForExecution( OptionsProvider options, ActionCacheChecker actionCacheChecker) { skyframeActionExecutor.prepareForExecution( - reporter, - executor, - options, - actionCacheChecker, - outputService, - isAnalysisIncremental()); + reporter, executor, options, actionCacheChecker, outputService, isAnalysisIncremental()); } /** Asks the Skyframe evaluator to run a single exclusive test. */ @@ -1769,7 +1754,7 @@ EvaluationResult targetPatterns( .setEventHandler(eventHandler) .setUseForkJoinPool(true) .build(); - return buildDriver.evaluate(patternSkyKeys, evaluationContext); + return memoizingEvaluator.evaluate(patternSkyKeys, evaluationContext); } /** @@ -2157,8 +2142,7 @@ private PlatformMappingValue getPlatformMappingValue( } private static BuildConfigurationKey toConfigurationKey( - PlatformMappingValue platformMappingValue, - BuildOptions toOption) + PlatformMappingValue platformMappingValue, BuildOptions toOption) throws InvalidConfigurationException { try { return BuildConfigurationKey.withPlatformMapping(platformMappingValue, toOption); @@ -2370,7 +2354,7 @@ EvaluationResult configureTargets( .setEventHandler(eventHandler) .build(); EvaluationResult result = - buildDriver.evaluate( + memoizingEvaluator.evaluate( Iterables.concat(configuredTargetKeys, topLevelAspectKeys), evaluationContext); // Get rid of any memory retained by the cache -- all loading is done. perBuildSyscallCache.clear(); @@ -2404,7 +2388,7 @@ EvaluationResult evaluateBuildDriverKeys( .setEventHandler(eventHandler) .build(); EvaluationResult result = - buildDriver.evaluate( + memoizingEvaluator.evaluate( Iterables.concat(buildDriverCTKeys, buildDriverAspectKeys), evaluationContext); // Get rid of any memory retained by the cache -- all loading is done. perBuildSyscallCache.clear(); @@ -2532,17 +2516,7 @@ public final EvaluationResult prepareAndGet( Set roots, EvaluationContext evaluationContext) throws InterruptedException { EvaluationContext evaluationContextToUse = evaluationContext.builder().setKeepGoing(/*keepGoing=*/ true).build(); - return buildDriver.evaluate(roots, evaluationContextToUse); - } - - /** - * Get metadata related to the prepareAndGet() lookup. Resulting data is specific to the - * underlying evaluation implementation. - */ - public String prepareAndGetMetadata( - Collection patterns, PathFragment offset, OptionsProvider options) - throws AbruptExitException, InterruptedException { - return buildDriver.meta(ImmutableList.of(getUniverseKey(patterns, offset)), options); + return memoizingEvaluator.evaluate(roots, evaluationContextToUse); } public Optional maybeGetHardcodedUniverseScope() { @@ -2734,8 +2708,7 @@ void dumpPackages(PrintStream out) { } } - @VisibleForTesting - public MemoizingEvaluator getEvaluatorForTesting() { + public MemoizingEvaluator getEvaluator() { return memoizingEvaluator; } @@ -3373,7 +3346,7 @@ private EvaluationResult evaluate( .setNumThreads(numThreads) .setEventHandler(eventHandler) .build(); - return buildDriver.evaluate(roots, evaluationContext); + return memoizingEvaluator.evaluate(roots, evaluationContext); } private static final UnnecessaryTemporaryStateDropper NULL_UNNECESSARY_TEMPORARY_STATE_DROPPER = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java index 086f5ff556cce5..cb2177edfb74e4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutorWrappingWalkableGraph.java @@ -55,6 +55,6 @@ public NodeEntry get(@Nullable SkyKey requestor, Reason reason, SkyKey key) public static SkyframeExecutorWrappingWalkableGraph of(SkyframeExecutor skyframeExecutor) { // TODO(janakr): Provide the graph in a more principled way. - return new SkyframeExecutorWrappingWalkableGraph(skyframeExecutor.getEvaluatorForTesting()); + return new SkyframeExecutorWrappingWalkableGraph(skyframeExecutor.getEvaluator()); } } 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 f8760d0afaf38b..ede9be366fd652 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 @@ -87,7 +87,6 @@ import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.UnixGlob.FilesystemCalls; -import com.google.devtools.build.skyframe.BuildDriver; import com.google.devtools.build.skyframe.Differencer; import com.google.devtools.build.skyframe.ErrorInfo; import com.google.devtools.build.skyframe.EvaluationContext; @@ -98,7 +97,6 @@ import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator; import com.google.devtools.build.skyframe.Injectable; import com.google.devtools.build.skyframe.MemoizingEvaluator; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -131,8 +129,7 @@ public abstract class AbstractPackageLoader implements PackageLoader { private final Differencer preinjectedDifferencer = new Differencer() { @Override - public Diff getDiff(WalkableGraph fromGraph, Version fromVersion, Version toVersion) - throws InterruptedException { + public Diff getDiff(WalkableGraph fromGraph, Version fromVersion, Version toVersion) { return preinjectedDiff; } }; @@ -376,7 +373,7 @@ private Result loadPackagesInternal( StoredEventHandler storedEventHandler) throws InterruptedException { EvaluationResult evalResult = - makeFreshDriver().evaluate(pkgKeys, evaluationContext); + makeFreshEvaluator().evaluate(pkgKeys, evaluationContext); ImmutableMap.Builder result = ImmutableMap.builder(); for (SkyKey key : pkgKeys) { @@ -415,16 +412,15 @@ private static NoSuchPackageException exceptionFromErrorInfo( "Unexpected Exception type from PackageValue for '" + pkgId + "'' with error: " + error, e); } - private BuildDriver makeFreshDriver() { - return new SequentialBuildDriver( - InMemoryMemoizingEvaluator.SUPPLIER.create( - makeFreshSkyFunctions(), - preinjectedDifferencer, - EvaluationProgressReceiver.NULL, - GraphInconsistencyReceiver.THROWING, - InMemoryMemoizingEvaluator.DEFAULT_STORED_EVENT_FILTER, - new MemoizingEvaluator.EmittedEventState(), - /*keepEdges=*/ false)); + private MemoizingEvaluator makeFreshEvaluator() { + return InMemoryMemoizingEvaluator.SUPPLIER.create( + makeFreshSkyFunctions(), + preinjectedDifferencer, + EvaluationProgressReceiver.NULL, + GraphInconsistencyReceiver.THROWING, + InMemoryMemoizingEvaluator.DEFAULT_STORED_EVENT_FILTER, + new MemoizingEvaluator.EmittedEventState(), + /*keepEdges=*/ false); } protected abstract ImmutableList getEnvironmentExtensions(); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/BUILD index 0c4dc7ac9a90c2..2be9f58cc4a281 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/BUILD @@ -40,14 +40,8 @@ java_library( name = "depsutils", srcs = ["SerializationDepsUtils.java"], deps = [ - "//src/main/java/com/google/devtools/build/lib/actions:artifact_owner", "//src/main/java/com/google/devtools/build/lib/actions:artifacts", - "//src/main/java/com/google/devtools/build/lib/actions:package_roots", - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//third_party:guava", - "//third_party:jsr305", ], ) diff --git a/src/main/java/com/google/devtools/build/lib/standalone/BUILD b/src/main/java/com/google/devtools/build/lib/standalone/BUILD index e39d7df7bc2d7d..b29b080f2d0e1b 100644 --- a/src/main/java/com/google/devtools/build/lib/standalone/BUILD +++ b/src/main/java/com/google/devtools/build/lib/standalone/BUILD @@ -21,7 +21,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:actions/file_write_action_context", "//src/main/java/com/google/devtools/build/lib/analysis:actions/template_expansion_action", "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", - "//src/main/java/com/google/devtools/build/lib/dynamic", "//src/main/java/com/google/devtools/build/lib/exec:abstract_spawn_strategy", "//src/main/java/com/google/devtools/build/lib/exec:execution_options", "//src/main/java/com/google/devtools/build/lib/exec:file_write_strategy", @@ -34,11 +33,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/exec/local:options", "//src/main/java/com/google/devtools/build/lib/rules:test_rules", "//src/main/java/com/google/devtools/build/lib/rules/cpp", - "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception", - "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code", "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/main/protobuf:failure_details_java_proto", "//third_party:guava", - "//third_party:jsr305", ], ) diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs/BUILD index 46338595b97640..6ec41833a0e7cf 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs/BUILD +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs/BUILD @@ -22,6 +22,5 @@ java_library( "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", ], ) diff --git a/src/main/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD b/src/main/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD index cb1c23abb6f96d..def6db79ba2e71 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD +++ b/src/main/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD @@ -14,7 +14,6 @@ java_library( deps = [ "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/starlarkdebug/proto:starlark_debugging_java_proto", - "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/net/starlark/java/eval", "//src/main/java/net/starlark/java/syntax", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/util/BUILD b/src/main/java/com/google/devtools/build/lib/util/BUILD index b83ae466bd02ff..6b675e8e33db49 100644 --- a/src/main/java/com/google/devtools/build/lib/util/BUILD +++ b/src/main/java/com/google/devtools/build/lib/util/BUILD @@ -259,7 +259,6 @@ java_library( deps = [ "//src/main/java/com/google/devtools/build/lib/concurrent", "//third_party:guava", - "//third_party:jsr305", ], ) @@ -331,7 +330,6 @@ java_library( deps = [ ":abrupt_exit_exception", ":detailed_exit_code", - ":exit_code", "//src/main/protobuf:failure_details_java_proto", ], ) diff --git a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java deleted file mode 100644 index 099d52a2ae1250..00000000000000 --- a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2014 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 com.google.devtools.build.lib.util.AbruptExitException; -import com.google.devtools.common.options.OptionsProvider; -import javax.annotation.Nullable; - -/** A BuildDriver wraps a MemoizingEvaluator, passing along the proper Version. */ -public interface BuildDriver { - /** - * See {@link MemoizingEvaluator#evaluate}, which has the same semantics except for the inclusion - * of a {@link Version} value. - */ - EvaluationResult evaluate( - Iterable roots, EvaluationContext evaluationContext) - throws InterruptedException; - - /** - * Retrieve metadata about the computation over the given roots. Data returned is specific to the - * underlying evaluator implementation. - */ - String meta(Iterable roots, OptionsProvider options) - throws AbruptExitException, InterruptedException; - - MemoizingEvaluator getGraphForTesting(); - - @Nullable - SkyValue getExistingValueForTesting(SkyKey key) throws InterruptedException; - - @Nullable - ErrorInfo getExistingErrorForTesting(SkyKey key) throws InterruptedException; - - @Nullable - NodeEntry getEntryForTesting(SkyKey key) throws InterruptedException; -} diff --git a/src/main/java/com/google/devtools/build/skyframe/EvaluationContext.java b/src/main/java/com/google/devtools/build/skyframe/EvaluationContext.java index 3eded7fb7772ed..52f06e4f50ae8c 100644 --- a/src/main/java/com/google/devtools/build/skyframe/EvaluationContext.java +++ b/src/main/java/com/google/devtools/build/skyframe/EvaluationContext.java @@ -25,7 +25,7 @@ /** * Includes options and states used by {@link MemoizingEvaluator#evaluate}, {@link - * BuildDriver#evaluate} and {@link WalkableGraphFactory#prepareAndGet} + * MemoizingEvaluator#evaluate} and {@link WalkableGraphFactory#prepareAndGet} */ public class EvaluationContext { private final int numThreads; 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 23204ddc90b46b..374ccbce1ffaf8 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java @@ -143,8 +143,8 @@ public void delete(Predicate deletePredicate) { @Override public void deleteDirty(long versionAgeLimit) { - Preconditions.checkArgument(versionAgeLimit >= 0); - final Version threshold = IntVersion.of(lastGraphVersion.getVal() - versionAgeLimit); + Preconditions.checkArgument(versionAgeLimit >= 0, versionAgeLimit); + Version threshold = IntVersion.of(lastGraphVersion.getVal() - versionAgeLimit); valuesToDelete.addAll( Sets.filter( progressReceiver.getUnenqueuedDirtyKeys(), @@ -158,14 +158,11 @@ public void deleteDirty(long versionAgeLimit) { @Override public EvaluationResult evaluate( - Iterable roots, Version version, EvaluationContext evaluationContext) + Iterable roots, EvaluationContext evaluationContext) throws InterruptedException { // NOTE: Performance critical code. See bug "Null build performance parity". - IntVersion intVersion = (IntVersion) version; - Preconditions.checkState((lastGraphVersion == null && intVersion.getVal() == 0) - || version.equals(lastGraphVersion.next()), - "InMemoryGraph supports only monotonically increasing Integer versions: %s %s", - lastGraphVersion, version); + IntVersion graphVersion = lastGraphVersion == null ? IntVersion.of(0) : lastGraphVersion.next(); + evaluationContext = ensureExecutorService(evaluationContext); setAndCheckEvaluateState(true, roots); try { // Mark for removal any inflight nodes from the previous evaluation. @@ -176,7 +173,7 @@ public EvaluationResult evaluate( // diffs for historical versions. This makes the following code sensitive to interrupts. // Ideally we would simply not update lastGraphVersion if an interrupt occurs. Diff diff = - differencer.getDiff(new DelegatingWalkableGraph(graph), lastGraphVersion, version); + differencer.getDiff(new DelegatingWalkableGraph(graph), lastGraphVersion, graphVersion); if (!diff.isEmpty() || !valuesToInject.isEmpty() || !valuesToDelete.isEmpty()) { valuesToInject.putAll(diff.changedKeysWithNewValues()); invalidate(diff.changedKeysWithoutNewValues()); @@ -184,7 +181,7 @@ public EvaluationResult evaluate( invalidate(valuesToInject.keySet()); performInvalidation(); - injectValues(intVersion); + injectValues(graphVersion); } EvaluationResult result; @@ -192,7 +189,7 @@ public EvaluationResult evaluate( ParallelEvaluator evaluator = new ParallelEvaluator( graph, - version, + graphVersion, skyFunctions, evaluationContext.getEventHandler(), emittedEventState, @@ -201,12 +198,7 @@ public EvaluationResult evaluate( evaluationContext.getKeepGoing(), progressReceiver, graphInconsistencyReceiver, - evaluationContext - .getExecutorServiceSupplier() - .orElse( - () -> - AbstractQueueVisitor.createExecutorService( - evaluationContext.getParallelism(), "skyframe-evaluator")), + evaluationContext.getExecutorServiceSupplier().get(), new SimpleCycleDetector(), evaluationContext.getCPUHeavySkyKeysThreadPoolSize(), evaluationContext.getExecutionPhaseThreadPoolSize(), @@ -218,11 +210,26 @@ public EvaluationResult evaluate( .setWalkableGraph(new DelegatingWalkableGraph(graph)) .build(); } finally { - lastGraphVersion = intVersion; + lastGraphVersion = graphVersion; setAndCheckEvaluateState(false, roots); } } + private static EvaluationContext ensureExecutorService(EvaluationContext evaluationContext) { + return evaluationContext.getExecutorServiceSupplier().isPresent() + ? evaluationContext + : evaluationContext + .builder() + .setNumThreads(evaluationContext.getParallelism()) + .setExecutorServiceSupplier( + () -> + AbstractQueueVisitor.createExecutorService( + evaluationContext.getParallelism(), + "skyframe-evaluator", + evaluationContext.getUseForkJoinPool())) + .build(); + } + /** * Removes entries in {@code valuesToInject} whose values are equal to the present values in the * graph. diff --git a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java index f94e22cf45f0eb..89fa0e3d223de7 100644 --- a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java @@ -31,14 +31,14 @@ * prerequisite {@link SkyValue}s. The {@link MemoizingEvaluator} implementation makes sure that * those are created beforehand. * - *

The graph caches previously computed value values. Arbitrary values can be invalidated between - * calls to {@link #evaluate}; they will be recreated the next time they are requested. + *

The graph caches previously computed values. Arbitrary values can be invalidated between calls + * to {@link #evaluate}; they will be recreated the next time they are requested. */ public interface MemoizingEvaluator { /** - * Computes the transitive closure of a given set of values at the given {@link Version}. See - * {@link EagerInvalidator#invalidate}. + * Computes the transitive closure of a given set of values. See {@link + * EagerInvalidator#invalidate}. * *

The returned EvaluationResult is guaranteed to contain a result for at least one root if * keepGoing is false. It will contain a result for every root if keepGoing is true, unless @@ -46,7 +46,7 @@ public interface MemoizingEvaluator { * missing. */ EvaluationResult evaluate( - Iterable roots, Version version, EvaluationContext evaluationContext) + Iterable roots, EvaluationContext evaluationContext) throws InterruptedException; /** diff --git a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java deleted file mode 100644 index bc459de7b1ceab..00000000000000 --- a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2014 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 com.google.common.base.Preconditions; -import com.google.devtools.build.lib.concurrent.AbstractQueueVisitor; -import com.google.devtools.common.options.OptionsProvider; -import javax.annotation.Nullable; - -/** - * A driver for auto-updating graphs which operate over monotonically increasing integer versions. - */ -public class SequentialBuildDriver implements BuildDriver { - private final MemoizingEvaluator memoizingEvaluator; - private IntVersion curVersion; - - public SequentialBuildDriver(MemoizingEvaluator evaluator) { - this.memoizingEvaluator = Preconditions.checkNotNull(evaluator); - this.curVersion = IntVersion.of(0); - } - - @Override - public EvaluationResult evaluate( - Iterable roots, EvaluationContext evaluationContext) - throws InterruptedException { - try { - return memoizingEvaluator.evaluate( - roots, - curVersion, - evaluationContext.getExecutorServiceSupplier().isPresent() - ? evaluationContext - : evaluationContext - .builder() - .setNumThreads(evaluationContext.getParallelism()) - .setExecutorServiceSupplier( - () -> - AbstractQueueVisitor.createExecutorService( - evaluationContext.getParallelism(), - "skyframe-evaluator", - evaluationContext.getUseForkJoinPool())) - .build()); - } finally { - curVersion = curVersion.next(); - } - } - - @Override - public String meta(Iterable of, OptionsProvider options) { - return ""; - } - - @Override - public MemoizingEvaluator getGraphForTesting() { - return memoizingEvaluator; - } - - @Nullable - @Override - public SkyValue getExistingValueForTesting(SkyKey key) throws InterruptedException { - return memoizingEvaluator.getExistingValue(key); - } - - @Nullable - @Override - public ErrorInfo getExistingErrorForTesting(SkyKey key) throws InterruptedException { - return memoizingEvaluator.getExistingErrorForTesting(key); - } - - @Nullable - @Override - public NodeEntry getEntryForTesting(SkyKey key) throws InterruptedException { - return memoizingEvaluator.getExistingEntryAtCurrentlyEvaluatingVersion(key); - } -} 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 db9c07422d51e9..259ccfd279d9eb 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 @@ -94,10 +94,10 @@ import com.google.devtools.build.lib.vfs.UnixGlob; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; import com.google.devtools.build.skyframe.AbstractSkyFunctionEnvironment; -import com.google.devtools.build.skyframe.BuildDriver; import com.google.devtools.build.skyframe.ErrorInfo; import com.google.devtools.build.skyframe.EvaluationContext; import com.google.devtools.build.skyframe.EvaluationResult; +import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -214,7 +214,7 @@ public static ActionExecutionContext createContextForInputDiscovery( FileOutErr fileOutErr, Path execRoot, MetadataHandler metadataHandler, - BuildDriver buildDriver, + MemoizingEvaluator evaluator, DiscoveredModulesPruner discoveredModulesPruner) { return ActionExecutionContext.forInputDiscovery( executor, @@ -227,7 +227,7 @@ public static ActionExecutionContext createContextForInputDiscovery( fileOutErr, eventHandler, ImmutableMap.of(), - new BlockingSkyFunctionEnvironment(buildDriver, eventHandler), + new BlockingSkyFunctionEnvironment(evaluator, eventHandler), /*actionFileSystem=*/ null, discoveredModulesPruner, UnixGlob.DEFAULT_SYSCALLS, @@ -319,11 +319,12 @@ public void writeTo(OutputStream out) throws IOException { * requested keys, blocking until the values are ready. */ private static final class BlockingSkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { - private final BuildDriver driver; + private final MemoizingEvaluator evaluator; private final EventHandler eventHandler; - private BlockingSkyFunctionEnvironment(BuildDriver driver, EventHandler eventHandler) { - this.driver = driver; + private BlockingSkyFunctionEnvironment( + MemoizingEvaluator evaluator, EventHandler eventHandler) { + this.evaluator = evaluator; this.eventHandler = eventHandler; } @@ -339,7 +340,7 @@ protected Map getValueOrUntypedExceptions( .setNumThreads(ResourceUsage.getAvailableProcessors()) .setEventHandler(new Reporter(new EventBus(), eventHandler)) .build(); - evaluationResult = driver.evaluate(depKeys, evaluationContext); + evaluationResult = evaluator.evaluate(depKeys, evaluationContext); } catch (InterruptedException e) { Thread.currentThread().interrupt(); for (SkyKey key : depKeys) { diff --git a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD index b6ae5ec119fbeb..fdb42b55bc2cc4 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD @@ -21,7 +21,6 @@ java_test( ], deps = [ "//src/main/java/com/google/devtools/build/lib/actions", - "//src/main/java/com/google/devtools/build/lib/actions:execution_requirements", "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", "//src/main/java/com/google/devtools/build/lib/analysis:template_variable_info", diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java index 3bc2a8c37a0d27..9d0e4308e5c58d 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java @@ -574,8 +574,7 @@ protected Artifact getBinArtifact(String packageRelativePath, ConfiguredTarget o ActionLookupValue actionLookupValue; try { actionLookupValue = - (ActionLookupValue) - skyframeExecutor.getEvaluatorForTesting().getExistingValue(actionLookupKey); + (ActionLookupValue) skyframeExecutor.getEvaluator().getExistingValue(actionLookupKey); } catch (InterruptedException e) { throw new IllegalStateException(e); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java index 4526e123f8d485..6f87fa014ef24d 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java @@ -167,7 +167,7 @@ Set getSkyframeEvaluatedActionLookupKeyCountForTesting() { private Set populateActionLookupKeyMapAndGetDiff() { ImmutableMap newMap = - stream(skyframeExecutor.getEvaluatorForTesting().getGraphEntries()) + stream(skyframeExecutor.getEvaluator().getGraphEntries()) .filter(e -> e.getKey() instanceof ActionLookupKey) .collect( toImmutableMap( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java index 0052253ab3928b..0bf33292ce4ec3 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java @@ -96,7 +96,7 @@ protected void runTestDepOnGoodTargetInBadPkgAndTransitiveCycle(boolean incremen protected void injectGraphListenerForTesting(Listener listener, boolean deterministic) { InMemoryMemoizingEvaluator memoizingEvaluator = - (InMemoryMemoizingEvaluator) skyframeExecutor.getEvaluatorForTesting(); + (InMemoryMemoizingEvaluator) skyframeExecutor.getEvaluator(); memoizingEvaluator.injectGraphTransformerForTesting( DeterministicHelper.makeTransformer(listener, deterministic)); } 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 0e6348a058a3e9..41508dd9d60b77 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 @@ -346,8 +346,7 @@ private static void injectInliningBzlLoadFunction( PackageFactory packageFactory, BlazeDirectories directories) { ImmutableMap skyFunctions = - ((InMemoryMemoizingEvaluator) skyframeExecutor.getEvaluatorForTesting()) - .getSkyFunctionsForTesting(); + ((InMemoryMemoizingEvaluator) skyframeExecutor.getEvaluator()).getSkyFunctionsForTesting(); BzlLoadFunction bzlLoadFunction = BzlLoadFunction.createForInlining( packageFactory, @@ -1095,7 +1094,7 @@ protected FileConfiguredTarget getHostFileConfiguredTarget(String label) protected ConfiguredAspect getAspect(String label) throws Exception { AspectValue aspect = (AspectValue) - skyframeExecutor.getEvaluatorForTesting().getDoneValues().entrySet().stream() + skyframeExecutor.getEvaluator().getDoneValues().entrySet().stream() .filter( entry -> entry.getKey() instanceof AspectKey @@ -1392,7 +1391,7 @@ protected final Artifact.DerivedArtifact getDerivedArtifact( if ((owner instanceof ActionLookupKey)) { SkyValue skyValue; try { - skyValue = skyframeExecutor.getEvaluatorForTesting().getExistingValue((SkyKey) owner); + skyValue = skyframeExecutor.getEvaluator().getExistingValue((SkyKey) owner); } catch (InterruptedException e) { throw new IllegalStateException(e); } diff --git a/src/test/java/com/google/devtools/build/lib/authandtls/BUILD b/src/test/java/com/google/devtools/build/lib/authandtls/BUILD index c71b796e1a75cd..7bef4b2873c15e 100644 --- a/src/test/java/com/google/devtools/build/lib/authandtls/BUILD +++ b/src/test/java/com/google/devtools/build/lib/authandtls/BUILD @@ -25,7 +25,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/authandtls", "//third_party:guava", "//third_party:junit4", - "//third_party:mockito", "//third_party:truth", ], ) diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD index b66e3de645f1a2..975e1d1db4e718 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BUILD @@ -61,7 +61,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository", "//src/main/java/com/google/devtools/build/lib/util:filetype", - "//src/main/java/com/google/devtools/build/lib/util/io", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe", diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleFunctionTest.java index 627d621b472455..c64e0f6e4c812e 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleFunctionTest.java @@ -58,7 +58,6 @@ import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; import com.google.devtools.build.lib.testutil.FoundationTestCase; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; -import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.UnixGlob; @@ -68,7 +67,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionName; @@ -85,7 +83,7 @@ @RunWith(JUnit4.class) public final class BzlmodRepoRuleFunctionTest extends FoundationTestCase { - private SequentialBuildDriver driver; + private MemoizingEvaluator evaluator; private final RecordingDifferencer differencer = new SequencedRecordingDifferencer(); private EvaluationContext evaluationContext; @@ -124,14 +122,14 @@ public void setup() throws Exception { .build(ruleClassProvider, fileSystem); HashFunction hashFunction = fileSystem.getDigestFunction().getHashFunction(); - MemoizingEvaluator evaluator = + evaluator = new InMemoryMemoizingEvaluator( ImmutableMap.builder() .put(FileValue.FILE, new FileFunction(packageLocator)) .put( FileStateValue.FILE_STATE, new FileStateFunction( - new AtomicReference(), + new AtomicReference<>(), new AtomicReference<>(UnixGlob.DEFAULT_SYSCALLS), externalFilesHelper)) .put( @@ -173,7 +171,7 @@ pkgFactory, ruleClassProvider, directories, getFakeBzlmodRepoRuleHelper())) new SkyFunction() { @Override public SkyValue compute(SkyKey skyKey, Environment env) - throws SkyFunctionException, InterruptedException { + throws SkyFunctionException { // Dummy function that returns a dep graph with just the root module in it. return BazelModuleResolutionFunction.createValue( ImmutableMap.of(ModuleKey.ROOT, Module.builder().build()), @@ -207,7 +205,6 @@ public SkyValue compute(SkyKey skyKey, Environment env) { /*ignoredPackagePrefixesFile=*/ PathFragment.EMPTY_FRAGMENT)) .build(), differencer); - driver = new SequentialBuildDriver(evaluator); PrecomputedValue.STARLARK_SEMANTICS.set(differencer, StarlarkSemantics.DEFAULT); PrecomputedValue.PATH_PACKAGE_LOCATOR.set(differencer, packageLocator.get()); @@ -240,7 +237,7 @@ private void setupRepoRules() throws Exception { " })"); } - private FakeBzlmodRepoRuleHelper getFakeBzlmodRepoRuleHelper() { + private static FakeBzlmodRepoRuleHelper getFakeBzlmodRepoRuleHelper() { ImmutableMap.Builder repoSpecs = ImmutableMap.builder(); repoSpecs // repos from non-registry overrides @@ -288,7 +285,7 @@ private FakeBzlmodRepoRuleHelper getFakeBzlmodRepoRuleHelper() { @Test public void createRepoRule_bazelTools() throws Exception { EvaluationResult result = - driver.evaluate( + evaluator.evaluate( ImmutableList.of(BzlmodRepoRuleValue.key("bazel_tools")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); @@ -309,7 +306,7 @@ public void createRepoRule_localConfigPlatform() throws Exception { return; } EvaluationResult result = - driver.evaluate( + evaluator.evaluate( ImmutableList.of(BzlmodRepoRuleValue.key("local_config_platform")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); @@ -325,7 +322,7 @@ public void createRepoRule_localConfigPlatform() throws Exception { @Test public void createRepoRule_overrides() throws Exception { EvaluationResult result = - driver.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("A")), evaluationContext); + evaluator.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("A")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -341,9 +338,9 @@ public void createRepoRule_overrides() throws Exception { @Test public void createRepoRule_bazelModules() throws Exception { // Using a starlark rule in a RepoSpec requires having run Selection first. - driver.evaluate(ImmutableList.of(BazelModuleResolutionValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(BazelModuleResolutionValue.KEY), evaluationContext); EvaluationResult result = - driver.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("B")), evaluationContext); + evaluator.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("B")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -360,9 +357,9 @@ public void createRepoRule_bazelModules() throws Exception { @Test public void createRepoRule_moduleRules() throws Exception { // Using a starlark rule in a RepoSpec requires having run Selection first. - driver.evaluate(ImmutableList.of(BazelModuleResolutionValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(BazelModuleResolutionValue.KEY), evaluationContext); EvaluationResult result = - driver.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("C")), evaluationContext); + evaluator.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("C")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -381,7 +378,7 @@ public void createRepoRule_moduleRules() throws Exception { @Test public void createRepoRule_notFound() throws Exception { EvaluationResult result = - driver.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("unknown")), evaluationContext); + evaluator.evaluate(ImmutableList.of(BzlmodRepoRuleValue.key("unknown")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java index 502c7ac5537449..a3bb9b8175980f 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java @@ -38,7 +38,6 @@ import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.SkyFunctions; import com.google.devtools.build.lib.testutil.FoundationTestCase; -import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.UnixGlob; @@ -49,7 +48,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; @@ -71,7 +69,7 @@ public final class BzlmodRepoRuleHelperTest extends FoundationTestCase { private Path workspaceRoot; - private SequentialBuildDriver driver; + private MemoizingEvaluator evaluator; private RecordingDifferencer differencer; private EvaluationContext evaluationContext; private FakeRegistry.Factory registryFactory; @@ -101,14 +99,14 @@ public void setup() throws Exception { ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, directories); - MemoizingEvaluator evaluator = + evaluator = new InMemoryMemoizingEvaluator( ImmutableMap.builder() .put(FileValue.FILE, new FileFunction(packageLocator)) .put( FileStateValue.FILE_STATE, new FileStateFunction( - new AtomicReference(), + new AtomicReference<>(), new AtomicReference<>(UnixGlob.DEFAULT_SYSCALLS), externalFilesHelper)) .put( @@ -121,7 +119,6 @@ public void setup() throws Exception { .put(SkyFunctions.PRECOMPUTED, new PrecomputedFunction()) .build(), differencer); - driver = new SequentialBuildDriver(evaluator); PrecomputedValue.STARLARK_SEMANTICS.set(differencer, StarlarkSemantics.DEFAULT); ModuleFileFunction.IGNORE_DEV_DEPS.set(differencer, false); @@ -145,7 +142,7 @@ public void getRepoSpec_bazelModule() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C.2.0")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("C.2.0")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -176,7 +173,7 @@ public void getRepoSpec_nonRegistryOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("C")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -212,7 +209,7 @@ public void getRepoSpec_singleVersionOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C.3.0")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("C.3.0")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -260,7 +257,7 @@ public void getRepoSpec_multipleVersionOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("D.2.0")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("D.2.0")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -287,7 +284,7 @@ public void getRepoSpec_notFound() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C")), evaluationContext); + evaluator.evaluate(ImmutableList.of(getRepoSpecByNameKey("C")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -310,10 +307,9 @@ static GetRepoSpecByNameValue create(Optional rule) { } private static final class GetRepoSpecByNameFunction implements SkyFunction { - private final BzlmodRepoRuleHelper bzlmodRepoRuleHelper; - public GetRepoSpecByNameFunction(BzlmodRepoRuleHelper bzlmodRepoRuleHelper) { + GetRepoSpecByNameFunction(BzlmodRepoRuleHelper bzlmodRepoRuleHelper) { this.bzlmodRepoRuleHelper = bzlmodRepoRuleHelper; } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/DiscoveryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/DiscoveryTest.java index 55832a3c8ca275..ce28683e69de63 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/DiscoveryTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/DiscoveryTest.java @@ -50,7 +50,6 @@ import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; import com.google.devtools.build.lib.testutil.FoundationTestCase; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; -import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.UnixGlob; @@ -60,7 +59,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionName; @@ -80,7 +78,7 @@ public class DiscoveryTest extends FoundationTestCase { private Path workspaceRoot; - private SequentialBuildDriver driver; + private MemoizingEvaluator evaluator; private RecordingDifferencer differencer; private EvaluationContext evaluationContext; private FakeRegistry.Factory registryFactory; @@ -149,14 +147,14 @@ public void setup() throws Exception { ImmutableMap repositoryHandlers = ImmutableMap.of(LocalRepositoryRule.NAME, new LocalRepositoryFunction()); - MemoizingEvaluator evaluator = + evaluator = new InMemoryMemoizingEvaluator( ImmutableMap.builder() .put(FileValue.FILE, new FileFunction(packageLocator)) .put( FileStateValue.FILE_STATE, new FileStateFunction( - new AtomicReference(), + new AtomicReference<>(), new AtomicReference<>(UnixGlob.DEFAULT_SYSCALLS), externalFilesHelper)) .put(DiscoveryValue.FUNCTION_NAME, new DiscoveryFunction()) @@ -183,7 +181,6 @@ public void setup() throws Exception { new BzlmodRepoRuleHelperImpl())) .build(), differencer); - driver = new SequentialBuildDriver(evaluator); PrecomputedValue.STARLARK_SEMANTICS.set(differencer, StarlarkSemantics.DEFAULT); RepositoryDelegatorFunction.REPOSITORY_OVERRIDES.set(differencer, ImmutableMap.of()); @@ -220,7 +217,7 @@ public void testSimpleDiamond() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -279,7 +276,7 @@ public void testDevDependency() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -330,7 +327,7 @@ public void testIgnoreDevDependency() throws Exception { ModuleFileFunction.IGNORE_DEV_DEPS.set(differencer, true); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -371,7 +368,7 @@ public void testCircularDependency() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -419,7 +416,7 @@ public void testCircularDependencyOnRootModule() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -461,7 +458,7 @@ public void testSingleVersionOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -515,7 +512,7 @@ public void testRegistryOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry1.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -568,7 +565,7 @@ public void testLocalPathOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); + evaluator.evaluate(ImmutableList.of(DiscoveryValue.KEY), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java index 84659c6209aaf8..b04d4c3056bffa 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleExtensionResolutionTest.java @@ -68,7 +68,6 @@ import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; import com.google.devtools.build.lib.testutil.FoundationTestCase; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; -import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; @@ -79,7 +78,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -99,7 +97,7 @@ public class ModuleExtensionResolutionTest extends FoundationTestCase { private Path workspaceRoot; private Path modulesRoot; - private SequentialBuildDriver driver; + private MemoizingEvaluator evaluator; private EvaluationContext evaluationContext; private FakeRegistry registry; private RecordingDifferencer differencer; @@ -152,14 +150,14 @@ public void setup() throws Exception { ImmutableMap repositoryHandlers = ImmutableMap.of(LocalRepositoryRule.NAME, new LocalRepositoryFunction()); - MemoizingEvaluator evaluator = + evaluator = new InMemoryMemoizingEvaluator( ImmutableMap.builder() .put(FileValue.FILE, new FileFunction(packageLocator)) .put( FileStateValue.FILE_STATE, new FileStateFunction( - new AtomicReference(), + new AtomicReference<>(), new AtomicReference<>(UnixGlob.DEFAULT_SYSCALLS), externalFilesHelper)) .put( @@ -239,7 +237,6 @@ public void setup() throws Exception { new ModuleExtensionResolutionFunction()) .build(), differencer); - driver = new SequentialBuildDriver(evaluator); PrecomputedValue.STARLARK_SEMANTICS.set(differencer, StarlarkSemantics.DEFAULT); RepositoryDelegatorFunction.REPOSITORY_OVERRIDES.set(differencer, ImmutableMap.of()); @@ -301,7 +298,7 @@ public void simpleExtension() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -371,7 +368,7 @@ public void multipleModules() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -428,7 +425,7 @@ public void multipleModules_devDependency() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -482,7 +479,7 @@ public void multipleModules_ignoreDevDependency() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("@ext.1.0.ext.ext_repo//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -538,7 +535,7 @@ public void labels_readInModuleExtension() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -599,7 +596,7 @@ public void labels_passedOnToRepoRule() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -659,7 +656,7 @@ public void labels_fromExtensionGeneratedRepo() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -715,7 +712,7 @@ public void labels_constructedInModuleExtension() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -765,7 +762,7 @@ public void generatedReposHaveCorrectMappings() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -814,7 +811,7 @@ public void generatedReposHaveCorrectMappings_internalRepoWins() throws Exceptio SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -848,7 +845,7 @@ public void generatedReposHaveCorrectMappings_strictDepsViolation() throws Excep SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); assertThat(result.hasError()).isTrue(); assertThat(result.getError().getException()) .hasMessageThat() @@ -869,7 +866,7 @@ public void wrongModuleExtensionLabel() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); assertThat(result.hasError()).isTrue(); assertThat(result.getError().getException()) .hasMessageThat() @@ -899,7 +896,7 @@ public void nativeExistingRuleIsEmpty() throws Exception { SkyKey skyKey = BzlLoadValue.keyForBuild(Label.parseAbsoluteUnchecked("//:data.bzl")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java index ca0be9a267a962..6b5dde67952a11 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java @@ -50,7 +50,6 @@ import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; import com.google.devtools.build.lib.testutil.FoundationTestCase; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; -import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.UnixGlob; import com.google.devtools.build.skyframe.EvaluationContext; @@ -59,7 +58,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -78,7 +76,7 @@ @RunWith(JUnit4.class) public class ModuleFileFunctionTest extends FoundationTestCase { - private SequentialBuildDriver driver; + private MemoizingEvaluator evaluator; private RecordingDifferencer differencer; private EvaluationContext evaluationContext; private FakeRegistry.Factory registryFactory; @@ -120,14 +118,14 @@ public void setup() throws Exception { ImmutableMap repositoryHandlers = ImmutableMap.of(LocalRepositoryRule.NAME, new LocalRepositoryFunction()); - MemoizingEvaluator evaluator = + evaluator = new InMemoryMemoizingEvaluator( ImmutableMap.builder() .put(FileValue.FILE, new FileFunction(packageLocator)) .put( FileStateValue.FILE_STATE, new FileStateFunction( - new AtomicReference(), + new AtomicReference<>(), new AtomicReference<>(UnixGlob.DEFAULT_SYSCALLS), externalFilesHelper)) .put( @@ -153,7 +151,6 @@ public void setup() throws Exception { new BzlmodRepoRuleHelperImpl())) .build(), differencer); - driver = new SequentialBuildDriver(evaluator); PrecomputedValue.STARLARK_SEMANTICS.set(differencer, StarlarkSemantics.DEFAULT); RepositoryDelegatorFunction.REPOSITORY_OVERRIDES.set(differencer, ImmutableMap.of()); @@ -191,7 +188,8 @@ public void testRootModule() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); + evaluator.evaluate( + ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -236,7 +234,8 @@ public void testRootModule_noModuleFunctionIsOkay() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); + evaluator.evaluate( + ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -261,7 +260,8 @@ public void testRootModule_badSelfOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); + evaluator.evaluate( + ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); assertThat(result.hasError()).isTrue(); assertThat(result.getError().toString()).contains("invalid override for the root module"); } @@ -288,7 +288,7 @@ public void testRegistriesCascade() throws Exception { SkyKey skyKey = ModuleFileValue.key(createModuleKey("B", "1.0"), null); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -329,7 +329,7 @@ public void testLocalPathOverride() throws Exception { SkyKey skyKey = ModuleFileValue.key(createModuleKey("B", ""), LocalPathOverride.create("code_for_b")); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -368,7 +368,7 @@ public void testRegistryOverride() throws Exception { createModuleKey("B", "1.0"), SingleVersionOverride.create(Version.EMPTY, registry2.getUrl(), ImmutableList.of(), 0)); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } @@ -410,7 +410,7 @@ public void testModuleExtensions_good() throws Exception { SkyKey skyKey = ModuleFileValue.key(createModuleKey("mymod", "1.0"), null); EvaluationResult result = - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); if (result.hasError()) { throw result.getError().getException(); } @@ -512,7 +512,7 @@ public void testModuleExtensions_duplicateProxy() throws Exception { SkyKey skyKey = ModuleFileValue.key(createModuleKey("mymod", "1.0"), null); reporter.removeHandler(failFastHandler); // expect failures - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); assertContainsEvent("this extension is already being used at"); } @@ -530,7 +530,7 @@ public void testModuleExtensions_repoNameCollision_localRepoName() throws Except SkyKey skyKey = ModuleFileValue.key(createModuleKey("mymod", "1.0"), null); reporter.removeHandler(failFastHandler); // expect failures - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); assertContainsEvent( "The repo name 'mymod' is already being used as the current module name at"); @@ -550,7 +550,7 @@ public void testModuleExtensions_repoNameCollision_exportedRepoName() throws Exc SkyKey skyKey = ModuleFileValue.key(createModuleKey("mymod", "1.0"), null); reporter.removeHandler(failFastHandler); // expect failures - driver.evaluate(ImmutableList.of(skyKey), evaluationContext); + evaluator.evaluate(ImmutableList.of(skyKey), evaluationContext); assertContainsEvent( "The repo exported as 'some_repo' by module extension 'myext' is already imported at"); @@ -564,7 +564,7 @@ public void testModuelFileExecute_syntaxError() throws Exception { "foo()"); reporter.removeHandler(failFastHandler); // expect failures - driver.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); + evaluator.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); assertContainsEvent("name 'foo' is not defined"); } @@ -575,7 +575,7 @@ public void testModuelFileExecute_evalError() throws Exception { "module(name='A',version='0.1',compatibility_level=\"4\")"); reporter.removeHandler(failFastHandler); // expect failures - driver.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); + evaluator.evaluate(ImmutableList.of(ModuleFileValue.KEY_FOR_ROOT_MODULE), evaluationContext); assertContainsEvent("parameter 'compatibility_level' got value of type 'string', want 'int'"); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD b/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD index 677b9736dfad59..e9fd9e4ac0ae81 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD +++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD @@ -46,7 +46,6 @@ java_library( "//third_party:guava", "//third_party:java-diff-utils", "//third_party:junit4", - "//third_party:mockito", "//third_party:truth", "@bazel_tools//tools/java/runfiles", ], diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/BUILD b/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/BUILD index d5d4fc454fa304..95def5f9eb46a4 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/BUILD +++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/cache/BUILD @@ -19,7 +19,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/bazel/repository/cache", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/test/java/com/google/devtools/build/lib/testutil", - "//third_party:guava", "//third_party:junit4", "//third_party:truth", ], diff --git a/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java b/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java index 22d951894572a9..ebe29d8c7dbe08 100644 --- a/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java +++ b/src/test/java/com/google/devtools/build/lib/buildeventservice/BazelBuildEventServiceModuleTest.java @@ -714,7 +714,7 @@ private void testOom(Runnable throwOom) throws Exception { write("foo/BUILD", "genrule(name = 'gen', outs = ['gen.out'], cmd = 'touch $@')"); AtomicBoolean threwOom = new AtomicBoolean(false); getSkyframeExecutor() - .getEvaluatorForTesting() + .getEvaluator() .injectGraphTransformerForTesting( NotifyingHelper.makeNotifyingTransformer( (key, type, order, context) -> { diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD index 5efcdc7261b7a9..58f2f0d03bdbbe 100644 --- a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD +++ b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD @@ -132,7 +132,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception", "//src/main/java/com/google/devtools/build/lib/util:detailed_exit_code", "//src/main/protobuf:failure_details_java_proto", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", "//third_party:guava", "//third_party:junit4", @@ -148,9 +147,7 @@ java_test( deps = [ "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:junit4", "//third_party:truth", ], @@ -170,7 +167,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/protobuf:failure_details_java_proto", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:junit4", "//third_party:truth", ], @@ -189,9 +185,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/protobuf:failure_details_java_proto", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:junit4", "//third_party:truth", "@com_google_testparameterinjector//:testparameterinjector", @@ -207,7 +201,6 @@ java_test( ], deps = [ "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:junit4", ], ) @@ -222,7 +215,6 @@ java_test( deps = [ "//src/main/java/com/google/devtools/build/lib/vfs", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:guava", "//third_party:junit4", "//third_party:truth", @@ -238,7 +230,6 @@ java_test( deps = [ "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", "//src/main/java/com/google/devtools/build/lib/analysis:view_creation_failed_exception", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", "//third_party:guava", "//third_party:junit4", @@ -256,7 +247,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/actions:artifacts", "//src/main/java/com/google/devtools/build/lib/analysis:view_creation_failed_exception", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils", "//third_party:guava", @@ -320,9 +310,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/actions:artifacts", "//src/main/java/com/google/devtools/build/lib/events", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:guava", "//third_party:junit4", "//third_party:truth", @@ -337,7 +325,6 @@ java_test( ], deps = [ "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", "//third_party:junit4", ], @@ -357,7 +344,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/events", "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils", "//third_party:guava", "//third_party:guava-testlib", @@ -382,7 +368,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/protobuf:failure_details_java_proto", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:guava", "//third_party:junit4", "//third_party:truth", @@ -416,7 +401,6 @@ java_test( deps = [ "//src/main/java/com/google/devtools/build/lib/actions", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:junit4", "//third_party:truth", ], @@ -525,9 +509,7 @@ java_test( ], deps = [ "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:guava", "//third_party:junit4", "//third_party:truth", @@ -546,7 +528,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", "//src/main/java/com/google/devtools/build/lib/util/io", "//src/main/java/com/google/devtools/build/lib/util/io:out-err", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", "//third_party:guava", "//third_party:junit4", @@ -574,7 +555,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/vfs", "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:guava", "//third_party:jsr305", "//third_party:junit4", @@ -612,7 +592,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/query2", "//src/main/java/com/google/devtools/build/lib/query2/engine", "//src/main/java/com/google/devtools/build/lib/runtime/commands", - "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:failure_details_java_proto", "//src/test/java/com/google/devtools/build/lib/buildtool/util", "//third_party:guava", @@ -683,13 +662,10 @@ java_test( "no_windows", ], deps = [ - "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/test/java/com/google/devtools/build/lib/analysis/util", "//src/test/java/com/google/devtools/build/lib/buildtool/util", - "//src/test/java/com/google/devtools/build/lib/packages:testutil", "//third_party:guava", "//third_party:junit4", "//third_party:truth", diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/QueryIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/buildtool/QueryIntegrationTest.java index 4c129511f1f706..c3f3ce17596dc5 100644 --- a/src/test/java/com/google/devtools/build/lib/buildtool/QueryIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/buildtool/QueryIntegrationTest.java @@ -786,7 +786,7 @@ public void inconsistentSkyQueryIncremental() throws Exception { fs.stubStat(badFile, null); CountDownLatch directoryListingLatch = new CountDownLatch(1); getSkyframeExecutor() - .getEvaluatorForTesting() + .getEvaluator() .injectGraphTransformerForTesting( NotifyingHelper.makeNotifyingTransformer( (key, type, order, context) -> { diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD index ab9fbdd5c5daca..cbc1c1dd33d526 100644 --- a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD +++ b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD @@ -60,7 +60,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/exec:execution_options", "//src/main/java/com/google/devtools/build/lib/exec:module_action_context_registry", "//src/main/java/com/google/devtools/build/lib/exec/local:options", - "//src/main/java/com/google/devtools/build/lib/includescanning", "//src/main/java/com/google/devtools/build/lib/network:connectivity_status", "//src/main/java/com/google/devtools/build/lib/network:noop_connectivity", "//src/main/java/com/google/devtools/build/lib/packages", diff --git a/src/test/java/com/google/devtools/build/lib/events/BUILD b/src/test/java/com/google/devtools/build/lib/events/BUILD index 21b39c324a9feb..94ed8c25aedeef 100644 --- a/src/test/java/com/google/devtools/build/lib/events/BUILD +++ b/src/test/java/com/google/devtools/build/lib/events/BUILD @@ -20,7 +20,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/util/io", "//src/main/java/net/starlark/java/eval", "//src/main/java/net/starlark/java/syntax", - "//src/test/java/com/google/devtools/build/lib/testutil", "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils", "//third_party:guava", "//third_party:guava-testlib", diff --git a/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java b/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java index a9d870f466693b..d3e309635cccda 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/TestTargetUtilsTest.java @@ -155,15 +155,14 @@ public void testFilterByTimeout() throws Exception { @Test public void testSkyframeExpandTestSuites() throws Exception { + assertExpandedSuitesSkyframe(Sets.newHashSet(test1, test2), ImmutableSet.of(test1, test2)); + assertExpandedSuitesSkyframe(Sets.newHashSet(test1, test2), ImmutableSet.of(suite)); assertExpandedSuitesSkyframe( - Sets.newHashSet(test1, test2), ImmutableSet.of(test1, test2)); - assertExpandedSuitesSkyframe(Sets.newHashSet(test1, test2), ImmutableSet.of(suite)); - assertExpandedSuitesSkyframe( - Sets.newHashSet(test1, test2, test1b), ImmutableSet.of(test1, suite, test1b)); + Sets.newHashSet(test1, test2, test1b), ImmutableSet.of(test1, suite, test1b)); // The large test if returned as filtered from the test_suite rule, but should still be in the // result set as it's explicitly added. assertExpandedSuitesSkyframe( - Sets.newHashSet(test1, test2, test1b), ImmutableSet.of(test1b, suite)); + Sets.newHashSet(test1, test2, test1b), ImmutableSet.of(test1b, suite)); } @Test @@ -191,7 +190,7 @@ private void assertExpandedSuitesSkyframe(Iterable expected, Collection< .setEventHandler(reporter) .build(); EvaluationResult result = - getSkyframeExecutor().getDriver().evaluate(ImmutableList.of(key), evaluationContext); + getSkyframeExecutor().getEvaluator().evaluate(ImmutableList.of(key), evaluationContext); ResolvedTargets

The metadata of files is ignored in comparing the actual results with the expected ones. - * The returned object however contains the actual metadata. + *

The metadata of files is ignored in comparing the actual results with the expected ones. The + * returned object however contains the actual metadata. */ - @SafeVarargs - private final RecursiveFilesystemTraversalValue traverseAndAssertFiles( + private RecursiveFilesystemTraversalValue traverseAndAssertFiles( TraversalRequest params, ResolvedFile... expectedFilesIgnoringMetadata) throws Exception { RecursiveFilesystemTraversalValue result = evalTraversalRequest(params); Map nameToActualResolvedFiles = new HashMap<>(); @@ -359,8 +355,7 @@ private final RecursiveFilesystemTraversalValue traverseAndAssertFiles( return result; } - @SafeVarargs - private static final void assertExpectedResolvedFilesPresent( + private static void assertExpectedResolvedFilesPresent( Map nameToActualResolvedFiles, ResolvedFile... expectedFilesIgnoringMetadata) throws Exception { @@ -460,8 +455,7 @@ public void evaluated( } private static void assertTraversalRootHashesAre( - boolean equal, RecursiveFilesystemTraversalValue a, RecursiveFilesystemTraversalValue b) - throws Exception { + boolean equal, RecursiveFilesystemTraversalValue a, RecursiveFilesystemTraversalValue b) { if (equal) { assertThat(a.getResolvedRoot().get().hashCode()) .isEqualTo(b.getResolvedRoot().get().hashCode()); @@ -472,12 +466,12 @@ private static void assertTraversalRootHashesAre( } private static void assertTraversalRootHashesAreEqual( - RecursiveFilesystemTraversalValue a, RecursiveFilesystemTraversalValue b) throws Exception { + RecursiveFilesystemTraversalValue a, RecursiveFilesystemTraversalValue b) { assertTraversalRootHashesAre(true, a, b); } private static void assertTraversalRootHashesAreNotEqual( - RecursiveFilesystemTraversalValue a, RecursiveFilesystemTraversalValue b) throws Exception { + RecursiveFilesystemTraversalValue a, RecursiveFilesystemTraversalValue b) { assertTraversalRootHashesAre(false, a, b); } @@ -817,8 +811,7 @@ private void assertTraverseSubpackages(PackageBoundaryMode traverseSubpackages) traverseAndAssertFiles(traversalRoot, expected1); break; case REPORT_ERROR: - SkyKey key = traversalRoot; - EvaluationResult result = eval(key); + EvaluationResult result = eval(traversalRoot); assertThat(result.hasError()).isTrue(); assertThat(result.getError().getException()) .hasMessageThat() diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunctionTest.java index 35a1678f27a1ca..16cf4d10be12d7 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunctionTest.java @@ -73,7 +73,7 @@ private EvaluationResult getEvaluationResult(SkyKey key) .setEventHandler(reporter) .build(); EvaluationResult evaluationResult = - skyframeExecutor.getDriver().evaluate(ImmutableList.of(key), evaluationContext); + skyframeExecutor.getEvaluator().evaluate(ImmutableList.of(key), evaluationContext); Preconditions.checkState(!evaluationResult.hasError()); return evaluationResult; } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java index 2d99f0fc5c599c..1f042a71331543 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java @@ -570,8 +570,7 @@ private Collection dirtyValues() throws InterruptedException { /* lastExecutionTimeRange= */ null, /* numThreads= */ 20) .getDirtyKeys( - skyframeExecutor.getEvaluatorForTesting().getValues(), - new BasicFilesystemDirtinessChecker()); + skyframeExecutor.getEvaluator().getValues(), new BasicFilesystemDirtinessChecker()); return ImmutableList.builder() .addAll(diff.changedKeysWithoutNewValues()) .addAll(diff.changedKeysWithNewValues().keySet()) @@ -718,7 +717,7 @@ private EvaluationResult evaluate(Iterable { @@ -943,7 +942,7 @@ public void testThreeSharedActionsRacing() throws Exception { Thread mainThread = Thread.currentThread(); CountDownLatch cStarted = new CountDownLatch(1); skyframeExecutor - .getEvaluatorForTesting() + .getEvaluator() .injectGraphTransformerForTesting( NotifyingHelper.makeNotifyingTransformer( (key, type, order, context) -> { @@ -1473,7 +1472,7 @@ public void interruptDoesntSuppressErrorOutput() throws Exception { NestedSetBuilder.emptySet(Order.STABLE_ORDER), NestedSetBuilder.emptySet(Order.STABLE_ORDER)); skyframeExecutor - .getEvaluatorForTesting() + .getEvaluator() .injectGraphTransformerForTesting( NotifyingHelper.makeNotifyingTransformer( (key, type, order, context) -> { @@ -1593,16 +1592,18 @@ public void analysisEventsNotStoredInExecution() throws Exception { assertThat( ValueWithMetadata.getEvents( skyframeExecutor - .getDriver() - .getEntryForTesting(ActionLookupData.create(lc1, 0)) + .getEvaluator() + .getExistingEntryAtCurrentlyEvaluatingVersion( + ActionLookupData.create(lc1, 0)) .getValueMaybeWithMetadata()) .toList()) .isEmpty(); assertThat( ValueWithMetadata.getEvents( skyframeExecutor - .getDriver() - .getEntryForTesting(ActionLookupData.create(lc2, 0)) + .getEvaluator() + .getExistingEntryAtCurrentlyEvaluatingVersion( + ActionLookupData.create(lc2, 0)) .getValueMaybeWithMetadata()) .toList()) .isEmpty(); @@ -1849,8 +1850,7 @@ public ActionResult execute(ActionExecutionContext actionExecutionContext) failureCTK, failureALV, topCTK, topALV)); skyframeExecutor - .getDriver() - .getGraphForTesting() + .getEvaluator() .injectGraphTransformerForTesting( DeterministicHelper.makeTransformer( (key, type, order, context) -> { @@ -1969,8 +1969,7 @@ public ActionResult execute(ActionExecutionContext actionExecutionContext) .getDifferencerForTesting() .inject(ImmutableMap.of(configuredTargetKey, nonRuleActionLookupValue)); skyframeExecutor - .getDriver() - .getGraphForTesting() + .getEvaluator() .injectGraphTransformerForTesting( DeterministicHelper.makeTransformer( (key, type, order, context) -> { 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 dcabd2d7fc95f3..64c99461c66f3c 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 @@ -110,7 +110,6 @@ import com.google.devtools.build.skyframe.MemoizingEvaluator.EmittedEventState; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequencedRecordingDifferencer; -import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionName; @@ -133,9 +132,7 @@ import javax.annotation.Nullable; import org.junit.Before; -/** - * The common code that's shared between various builder tests. - */ +/** The common code that's shared between various builder tests. */ public abstract class TimestampBuilderTestCase extends FoundationTestCase { @SerializationConstant protected static final ActionLookupKey ACTION_LOOKUP_KEY = @@ -153,7 +150,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { protected final ActionKeyContext actionKeyContext = new ActionKeyContext(); @Before - public final void initialize() throws Exception { + public final void initialize() throws Exception { options = OptionsParser.builder() .optionsClasses(KeepGoingOption.class, BuildRequestOptions.class, CoreOptions.class) @@ -225,10 +222,11 @@ protected BuilderWithResult createBuilder( rootDirectory, /* defaultSystemJavabase= */ null, TestConstants.PRODUCT_NAME); - ExternalFilesHelper externalFilesHelper = ExternalFilesHelper.createForTesting( - pkgLocator, - ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, - directories); + ExternalFilesHelper externalFilesHelper = + ExternalFilesHelper.createForTesting( + pkgLocator, + ExternalFileAction.DEPEND_ON_EXTERNAL_PKG_FOR_EXTERNAL_REPO_PATHS, + directories); differencer = new SequencedRecordingDifferencer(); ActionExecutionStatusReporter statusReporter = @@ -319,7 +317,6 @@ protected BuilderWithResult createBuilder( DEFAULT_STORED_EVENT_FILTER, new EmittedEventState(), /*keepEdges=*/ true); - final SequentialBuildDriver driver = new SequentialBuildDriver(evaluator); PrecomputedValue.BUILD_ID.set(differencer, UUID.randomUUID()); PrecomputedValue.ACTION_ENV.set(differencer, ImmutableMap.of()); PrecomputedValue.PATH_PACKAGE_LOCATOR.set(differencer, pkgLocator.get()); @@ -392,7 +389,7 @@ public void buildArtifacts( .setNumThreads(threadCount) .setEventHandler(reporter) .build(); - EvaluationResult result = driver.evaluate(keys, evaluationContext); + EvaluationResult result = evaluator.evaluate(keys, evaluationContext); this.latestResult = result; if (result.hasError()) { 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 6681cfd6aa09aa..ca2d1fdb547aa8 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 @@ -46,7 +46,6 @@ import com.google.devtools.build.lib.vfs.Symlinks; import com.google.devtools.build.skyframe.EvaluationContext; import com.google.devtools.build.skyframe.EvaluationResult; -import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; @@ -137,7 +136,6 @@ public void testEqualTreeArtifacts() throws Exception { ImmutableList children = ImmutableList.of(PathFragment.create("one"), PathFragment.create("two")); TreeArtifactValue valueOne = evaluateTreeArtifact(treeArtifact, children); - MemoizingEvaluator evaluator = driver.getGraphForTesting(); // Delete action execution node to force our artifacts to be re-evaluated. evaluator.delete(key -> actions.contains(key.argument())); TreeArtifactValue valueTwo = evaluateTreeArtifact(treeArtifact, children); @@ -251,7 +249,7 @@ private EvaluationResult evaluate(SkyKey... keys) .setNumThreads(SkyframeExecutor.DEFAULT_THREAD_COUNT) .setEventHandler(NullEventHandler.INSTANCE) .build(); - return driver.evaluate(Arrays.asList(keys), evaluationContext); + return evaluator.evaluate(Arrays.asList(keys), evaluationContext); } private class TreeArtifactExecutionFunction implements SkyFunction { diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java index e8e58b5cd5fed4..e178f15e08bd26 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java @@ -13,7 +13,6 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe.util; -import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -51,7 +50,7 @@ private SkyframeExecutorTestUtils() { @Nullable public static SkyValue getExistingValue(SkyframeExecutor skyframeExecutor, SkyKey key) throws InterruptedException { - return skyframeExecutor.getEvaluatorForTesting().getExistingValue(key); + return skyframeExecutor.getEvaluator().getExistingValue(key); } /** @@ -60,7 +59,7 @@ public static SkyValue getExistingValue(SkyframeExecutor skyframeExecutor, SkyKe @Nullable public static ErrorInfo getExistingError(SkyframeExecutor skyframeExecutor, SkyKey key) throws InterruptedException { - return skyframeExecutor.getEvaluatorForTesting().getExistingErrorForTesting(key); + return skyframeExecutor.getEvaluator().getExistingErrorForTesting(key); } /** Calls {@link MemoizingEvaluator#evaluate} on the given {@link SkyframeExecutor}'s graph. */ @@ -76,7 +75,7 @@ public static EvaluationResult evaluate( .setNumThreads(SkyframeExecutor.DEFAULT_THREAD_COUNT) .setEventHandler(errorEventListener) .build(); - return skyframeExecutor.getDriver().evaluate(ImmutableList.of(key), evaluationContext); + return skyframeExecutor.getEvaluator().evaluate(ImmutableList.of(key), evaluationContext); } /** @@ -117,15 +116,9 @@ public static ConfiguredTarget getExistingConfiguredTarget( * BuildConfigurationValue)}, this doesn't make the caller request a specific configuration. */ public static Iterable getExistingConfiguredTargets( - SkyframeExecutor skyframeExecutor, final Label label) { + SkyframeExecutor skyframeExecutor, Label label) { return Iterables.filter( - getAllExistingConfiguredTargets(skyframeExecutor), - new Predicate() { - @Override - public boolean apply(ConfiguredTarget input) { - return input.getLabel().equals(label); - } - }); + getAllExistingConfiguredTargets(skyframeExecutor), input -> input.getLabel().equals(label)); } /** @@ -134,8 +127,10 @@ public boolean apply(ConfiguredTarget input) { public static Iterable getAllExistingConfiguredTargets( SkyframeExecutor skyframeExecutor) { Collection values = - Maps.filterKeys(skyframeExecutor.getEvaluatorForTesting().getValues(), - SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET)).values(); + Maps.filterKeys( + skyframeExecutor.getEvaluator().getValues(), + SkyFunctions.isSkyFunction(SkyFunctions.CONFIGURED_TARGET)) + .values(); List cts = Lists.newArrayList(); for (SkyValue value : values) { if (value != null) { diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java index 0ff29ab4d34d64..9e8477de476235 100644 --- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java +++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkDefinedAspectsTest.java @@ -246,8 +246,7 @@ public void aspectAllowsFragmentsToBeSpecified() throws Exception { update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx"); AspectKey key = Iterables.getOnlyElement(analysisResult.getAspectsMap().keySet()); - AspectValue aspectValue = - (AspectValue) skyframeExecutor.getEvaluatorForTesting().getExistingValue(key); + AspectValue aspectValue = (AspectValue) skyframeExecutor.getEvaluator().getExistingValue(key); AspectDefinition aspectDefinition = aspectValue.getAspect().getDefinition(); assertThat( aspectDefinition diff --git a/src/test/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD b/src/test/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD index 12e91d7d0ecaae..507d71e42db68c 100644 --- a/src/test/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD +++ b/src/test/java/com/google/devtools/build/lib/starlarkdebug/server/BUILD @@ -63,7 +63,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/starlarkdebug/server", "//src/main/java/net/starlark/java/annot", "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", "//third_party:guava", "//third_party:junit4", "//third_party:truth", diff --git a/src/test/java/com/google/devtools/build/skyframe/BUILD b/src/test/java/com/google/devtools/build/skyframe/BUILD index 29ae40cdc8e88c..56dd58e6e14ee5 100644 --- a/src/test/java/com/google/devtools/build/skyframe/BUILD +++ b/src/test/java/com/google/devtools/build/skyframe/BUILD @@ -50,6 +50,7 @@ java_library( ), deps = [ ":testutil", + "//src/main/java/com/google/devtools/build/lib/bugreport", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/events", diff --git a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java index 7b476303efcea3..27ef6a4677bf55 100644 --- a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java @@ -39,6 +39,7 @@ import com.google.common.truth.IterableSubject; import com.google.common.util.concurrent.SettableFuture; import com.google.common.util.concurrent.Uninterruptibles; +import com.google.devtools.build.lib.bugreport.BugReport; import com.google.devtools.build.lib.events.DelegatingEventHandler; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventCollector; @@ -53,11 +54,11 @@ import com.google.devtools.build.skyframe.NotifyingHelper.EventType; import com.google.devtools.build.skyframe.NotifyingHelper.Listener; import com.google.devtools.build.skyframe.NotifyingHelper.Order; -import com.google.devtools.build.skyframe.SkyFunction.Environment; import com.google.devtools.build.skyframe.SkyFunction.Restart; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; import com.google.devtools.build.skyframe.ThinNodeEntry.DirtyType; import com.google.devtools.build.skyframe.proto.GraphInconsistency.Inconsistency; +import com.google.errorprone.annotations.ForOverride; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collection; @@ -137,9 +138,17 @@ protected MemoizingEvaluator getMemoizingEvaluator( true); } - protected BuildDriver getBuildDriver(MemoizingEvaluator evaluator) { - return new SequentialBuildDriver(evaluator); - } + /** Invoked immediately before each call to {@link MemoizingEvaluator#evaluate}. */ + @ForOverride + protected void beforeEvaluation() {} + + /** + * Invoked immediately after {@link MemoizingEvaluator#evaluate} with the {@link EvaluationResult} + * or {@code null} if an exception was thrown. + */ + @ForOverride + protected void afterEvaluation(@Nullable EvaluationResult result, EvaluationContext context) + throws InterruptedException {} protected boolean eventsStored() { return true; @@ -370,7 +379,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) { null, /*waitForException=*/ false, null, - ImmutableList.of())); + ImmutableList.of())); // When it is interrupted during evaluation (here, caused by the failure of the throwing // SkyFunction during a no-keep-going evaluation), then the ParallelEvaluator#evaluate call @@ -412,7 +421,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedExcept null, /*waitForException=*/ false, null, - ImmutableList.of())); + ImmutableList.of())); // When it is interrupted during evaluation (here, caused by the failure of a sibling node // during a no-keep-going evaluation), @@ -932,8 +941,8 @@ public void manyValuesDependOnSingleValue() throws Exception { tester.set(leaf, new StringValue("leaf")); EvaluationResult result = tester.eval(/* keepGoing= */ false, values); - for (int i = 0; i < values.length; i++) { - SkyValue actual = result.get(toSkyKey(values[i])); + for (String value : values) { + SkyValue actual = result.get(toSkyKey(value)); assertThat(actual).isEqualTo(new StringValue("leaf")); } @@ -962,8 +971,8 @@ public void singleValueDependsOnManyValues() throws Exception { } SkyKey rootKey = toSkyKey("root"); TestFunction value = tester.getOrCreate(rootKey).setComputedValue(CONCATENATE); - for (int i = 0; i < values.length; i++) { - value.addDependency(values[i]); + for (SkyKey skyKey : values) { + value.addDependency(skyKey); } EvaluationResult result = tester.eval(/* keepGoing= */ false, rootKey); @@ -1225,7 +1234,7 @@ public void cycleAndSelfEdgeWithDirtyValue() throws Exception { } cycleInfo = Iterables.getOnlyElement( - tester.driver.getExistingErrorForTesting(cycleKey2).getCycleInfo()); + tester.evaluator.getExistingErrorForTesting(cycleKey2).getCycleInfo()); if (cyclesDetected()) { assertThat(cycleInfo.getCycle()).containsExactly(cycleKey1).inOrder(); assertThat(cycleInfo.getPathToCycle()).containsExactly(cycleKey2).inOrder(); @@ -1244,8 +1253,7 @@ public void cycleAndSelfEdgeWithDirtyValueInSameGroup() throws Exception { new SkyFunction() { @Nullable @Override - public SkyValue compute(SkyKey skyKey, Environment env) - throws SkyFunctionException, InterruptedException { + public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException { // The order here is important -- 2 before 1. Map result = env.getValues(ImmutableList.of(cycleKey2, cycleKey1)); @@ -1430,7 +1438,6 @@ public void cycleAndErrorAndReady() throws Exception { // then wait until the error is thrown, so that otherTop's builder is not re-entered. valuesReady.countDown(); TrackingAwaiter.INSTANCE.awaitLatchAndTrackExceptions(errorThrown, "error not thrown"); - return; } }, /*deterministic=*/ true); @@ -1476,7 +1483,7 @@ public void cycleAndErrorAndReady() throws Exception { /*notifyFinish=*/ null, /*waitForException=*/ false, /*value=*/ null, - ImmutableList.of())); + ImmutableList.of())); // Make sure cycle2Key has declared its dependence on cycle1Key before error throws. tester .getOrCreate(cycle2Key) @@ -1487,7 +1494,7 @@ public void cycleAndErrorAndReady() throws Exception { null, false, new StringValue("never returned"), - ImmutableList.of(cycle1Key))); + ImmutableList.of(cycle1Key))); // Value that waits until an exception is thrown to finish building. We use it just to be // informed when the threadpool is shutting down. final SkyKey exceptionMarker = GraphTester.toSkyKey("exceptionMarker"); @@ -1500,7 +1507,7 @@ public void cycleAndErrorAndReady() throws Exception { /*notifyFinish=*/ errorThrown, /*waitForException=*/ true, new StringValue("exception marker"), - ImmutableList.of())); + ImmutableList.of())); tester.invalidate(); secondBuild.set(true); // otherTop must be first, since we check top-level values for cycles in the order in which @@ -1585,8 +1592,7 @@ public void nodeInvalidatedThenDoubleCycle() throws InterruptedException { new SkyFunction() { @Nullable @Override - public SkyValue compute(SkyKey skyKey, Environment env) - throws SkyFunctionException, InterruptedException { + public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException { env.getValues(ImmutableList.of(topKey, depKey)); assertThat(env.valuesMissing()).isTrue(); return null; @@ -1731,7 +1737,7 @@ public void incompleteDirectDepsAreClearedBeforeInvalidation() throws Exception /*notifyFinish=*/ errorFinish, /*waitForException=*/ false, /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey slowKey = GraphTester.toSkyKey("slow"); tester .getOrCreate(slowKey) @@ -1742,7 +1748,7 @@ public void incompleteDirectDepsAreClearedBeforeInvalidation() throws Exception /*notifyFinish=*/ null, /*waitForException=*/ true, new StringValue("slow"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey midKey = GraphTester.toSkyKey("mid"); tester.getOrCreate(midKey).addDependency(slowKey).setComputedValue(COPY); SkyKey topKey = GraphTester.toSkyKey("top"); @@ -1788,7 +1794,7 @@ public void incompleteDirectDepsAreClearedBeforeKeepGoing() throws Exception { /*notifyFinish=*/ errorFinish, /*waitForException=*/ false, /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey slowKey = GraphTester.toSkyKey("slow"); tester .getOrCreate(slowKey) @@ -1799,7 +1805,7 @@ public void incompleteDirectDepsAreClearedBeforeKeepGoing() throws Exception { /*notifyFinish=*/ null, /*waitForException=*/ true, new StringValue("slow"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey midKey = GraphTester.toSkyKey("mid"); tester.getOrCreate(midKey).addDependency(slowKey).setComputedValue(COPY); SkyKey topKey = GraphTester.toSkyKey("top"); @@ -1842,7 +1848,7 @@ private void passThenFailToBuild(boolean successFirst) throws Exception { /*notifyFinish=*/ blocker, /*waitForException=*/ false, new StringValue("yippee"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey slowFailKey = GraphTester.toSkyKey("slow_then_fail"); tester .getOrCreate(slowFailKey) @@ -1853,7 +1859,7 @@ private void passThenFailToBuild(boolean successFirst) throws Exception { /*notifyFinish=*/ null, /*waitForException=*/ false, /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); EvaluationResult result; if (successFirst) { @@ -1894,7 +1900,7 @@ public void incompleteDirectDepsForDirtyValue() throws Exception { /*notifyFinish=*/ errorFinish, /*waitForException=*/ false, /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey slowKey = GraphTester.toSkyKey("slow"); tester .getOrCreate(slowKey) @@ -1905,7 +1911,7 @@ public void incompleteDirectDepsForDirtyValue() throws Exception { /*notifyFinish=*/ null, /*waitForException=*/ true, new StringValue("slow"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey midKey = GraphTester.toSkyKey("mid"); tester.getOrCreate(midKey).addDependency(slowKey).setComputedValue(COPY); tester.set(topKey, null); @@ -2099,7 +2105,7 @@ public void errorInDependencyGroup() throws Exception { /*waitForException=*/ false, // ChainedFunction throws when value is null. /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); SkyKey slowKey = GraphTester.toSkyKey("slow"); tester .getOrCreate(slowKey) @@ -2110,7 +2116,7 @@ public void errorInDependencyGroup() throws Exception { /*notifyFinish=*/ null, /*waitForException=*/ true, new StringValue("slow"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); final SkyKey midKey = GraphTester.toSkyKey("mid"); tester.getOrCreate(midKey).addDependency(slowKey).setComputedValue(COPY); final SkyKey mid2Key = GraphTester.toSkyKey("mid2"); @@ -2403,7 +2409,7 @@ public void removeReverseDepFromRebuildingNode() throws Exception { null, false, new StringValue("second"), - ImmutableList.of())); + ImmutableList.of())); // And mid is independently marked as modified, tester .getOrCreate(midKey, /*markAsModified=*/ true) @@ -2861,16 +2867,16 @@ public void singleValueDependsOnManyDirtyValues() throws Exception { } SkyKey topKey = toSkyKey("top"); TestFunction value = tester.getOrCreate(topKey).setComputedValue(CONCATENATE); - for (int i = 0; i < values.length; i++) { - value.addDependency(values[i]); + for (SkyKey skyKey : values) { + value.addDependency(skyKey); } EvaluationResult result = tester.eval(/*keepGoing=*/ false, topKey); assertThat(result.get(topKey)).isEqualTo(new StringValue(expected.toString())); for (int j = 0; j < RUNS; j++) { - for (int i = 0; i < values.length; i++) { - tester.getOrCreate(values[i], /*markAsModified=*/ true); + for (SkyKey skyKey : values) { + tester.getOrCreate(skyKey, /*markAsModified=*/ true); } // This value has an error, but we should never discover it because it is not marked changed // and all of its dependencies re-evaluate to the same thing. @@ -2931,7 +2937,7 @@ private void dirtyValueChildrenProperlyRemovedOnEarlyBuildAbort( /*notifyFinish=*/ errorFinish, /*waitForException=*/ false, /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); tester .getOrCreate(slowKey) .setBuilder( @@ -2941,7 +2947,7 @@ private void dirtyValueChildrenProperlyRemovedOnEarlyBuildAbort( /*notifyFinish=*/ null, /*waitForException=*/ true, new StringValue("leaf2"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); tester.invalidate(); // errorKey finishes, written to graph -> leafKey maybe starts+finishes & (Visitor aborts) // -> one of mother or father builds. The other one should be cleaned, and no references to it @@ -3662,7 +3668,7 @@ public void errorOnlyBubblesToRequestingParents() throws Exception { /*notifyFinish=*/ errorFinish, /*waitForException=*/ false, /*value=*/ null, - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); tester .getOrCreate(slowKey) .setBuilder( @@ -3672,7 +3678,7 @@ public void errorOnlyBubblesToRequestingParents() throws Exception { /*notifyFinish=*/ null, /*waitForException=*/ true, new StringValue("leaf2"), - /*deps=*/ ImmutableList.of())); + /*deps=*/ ImmutableList.of())); tester.invalidate(); // errorKey finishes, written to graph -> slowKey maybe starts+finishes & (Visitor aborts) // -> some top key builds. @@ -3897,8 +3903,8 @@ public void raceConditionWithNoKeepGoingErrors_InflightError() throws Exception assertThat(result.hasError()).isTrue(); // And no value is committed for otherErrorKey, - assertThat(tester.driver.getExistingErrorForTesting(otherErrorKey)).isNull(); - assertThat(tester.driver.getExistingValueForTesting(otherErrorKey)).isNull(); + assertThat(tester.evaluator.getExistingErrorForTesting(otherErrorKey)).isNull(); + assertThat(tester.evaluator.getExistingValue(otherErrorKey)).isNull(); // And no value was committed for errorKey, assertWithMessage(nonNullValueMessage.get()).that(nonNullValueMessage.get()).isNull(); @@ -4124,7 +4130,10 @@ public Predicate depEdgeFilterForEventsAndPosts(SkyKey primaryKey) { assertThatEvents(eventCollector).containsExactly("includedDep warning"); assertThat( ValueWithMetadata.getEvents( - tester.driver.getEntryForTesting(parent).getValueMaybeWithMetadata()) + tester + .evaluator + .getExistingEntryAtCurrentlyEvaluatingVersion(parent) + .getValueMaybeWithMetadata()) .toList()) .containsExactly( new TaggedEvents(null, ImmutableList.of(Event.warn("includedDep warning")))); @@ -4327,7 +4336,7 @@ public void valueInjectionOverExistingEntryMarkedForDeletion() throws Exception SkyValue val = new StringValue("val"); tester.getOrCreate(key).setConstantValue(new StringValue("old_val")); - tester.evaluator.delete(Predicates.alwaysTrue()); + tester.evaluator.delete(Predicates.alwaysTrue()); tester.differencer.inject(ImmutableMap.of(key, val)); assertThat(tester.evalAndGet(/*keepGoing=*/ false, key)).isEqualTo(val); } @@ -4353,7 +4362,7 @@ public void valueInjectionOverExistingEqualEntryMarkedForDeletion() throws Excep tester.differencer.inject(ImmutableMap.of(key, val)); assertThat(tester.evalAndGet(/*keepGoing=*/ false, key)).isEqualTo(val); - tester.evaluator.delete(Predicates.alwaysTrue()); + tester.evaluator.delete(Predicates.alwaysTrue()); tester.differencer.inject(ImmutableMap.of(key, val)); assertThat(tester.evalAndGet(/*keepGoing=*/ false, key)).isEqualTo(val); } @@ -4747,8 +4756,7 @@ public void cachedErrorCausesRestart() throws Exception { new SkyFunction() { @Nullable @Override - public SkyValue compute(SkyKey skyKey, Environment env) - throws SkyFunctionException, InterruptedException { + public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException { topSecondEval.countDown(); env.getValue(errorKey); topRequestedError.countDown(); @@ -4811,7 +4819,7 @@ private void makeGraphDeterministic() { private static final class PassThroughSelected implements ValueComputer { private final SkyKey key; - public PassThroughSelected(SkyKey key) { + PassThroughSelected(SkyKey key) { this.key = key; } @@ -4846,11 +4854,11 @@ private void removedNodeComesBack() throws Exception { assertThat(tester.evalAndGet(/*keepGoing=*/ true, top)).isEqualTo(topValue); if (preciseEvaluationStatusStored()) { // And there is no value for mid in the graph, - assertThat(tester.driver.getExistingValueForTesting(mid)).isNull(); - assertThat(tester.driver.getExistingErrorForTesting(mid)).isNull(); + assertThat(tester.evaluator.getExistingValue(mid)).isNull(); + assertThat(tester.evaluator.getExistingErrorForTesting(mid)).isNull(); // Or for leaf. - assertThat(tester.driver.getExistingValueForTesting(leaf)).isNull(); - assertThat(tester.driver.getExistingErrorForTesting(leaf)).isNull(); + assertThat(tester.evaluator.getExistingValue(leaf)).isNull(); + assertThat(tester.evaluator.getExistingErrorForTesting(leaf)).isNull(); } // When top is changed to depend directly on leaf, @@ -4864,8 +4872,8 @@ private void removedNodeComesBack() throws Exception { assertThat(tester.evalAndGet(/*keepGoing=*/ true, top)).isEqualTo(leafValue); if (preciseEvaluationStatusStored()) { // and there is no value for mid in the graph, - assertThat(tester.driver.getExistingValueForTesting(mid)).isNull(); - assertThat(tester.driver.getExistingErrorForTesting(mid)).isNull(); + assertThat(tester.evaluator.getExistingValue(mid)).isNull(); + assertThat(tester.evaluator.getExistingErrorForTesting(mid)).isNull(); } } @@ -4922,8 +4930,8 @@ public void removedInvalidatedNodeComesBackAndOtherInvalidates() throws Exceptio assertThat(tester.evalAndGet(/*keepGoing=*/ true, top)).isEqualTo(topValue); if (preciseEvaluationStatusStored()) { // And there is no value for leaf in the graph. - assertThat(tester.driver.getExistingValueForTesting(leaf)).isNull(); - assertThat(tester.driver.getExistingErrorForTesting(leaf)).isNull(); + assertThat(tester.evaluator.getExistingValue(leaf)).isNull(); + assertThat(tester.evaluator.getExistingErrorForTesting(leaf)).isNull(); } // When leaf is evaluated, so that it is present in the graph again, assertThat(tester.evalAndGet(/*keepGoing=*/ true, leaf)).isEqualTo(leafValue); @@ -4977,13 +4985,15 @@ public void cleanReverseDepFromDirtyNodeNotInBuild() throws Exception { tester.invalidate(); assertThrows(InterruptedException.class, () -> tester.eval(/*keepGoing=*/ false, topKey)); // But inactive is still present, - assertThat(tester.driver.getEntryForTesting(inactiveKey)).isNotNull(); + assertThat(tester.evaluator.getExistingEntryAtCurrentlyEvaluatingVersion(inactiveKey)) + .isNotNull(); // And still dirty, - assertThat(tester.driver.getEntryForTesting(inactiveKey).isDirty()).isTrue(); + assertThat(tester.evaluator.getExistingEntryAtCurrentlyEvaluatingVersion(inactiveKey).isDirty()) + .isTrue(); // And re-evaluates successfully, assertThat(tester.evalAndGet(/*keepGoing=*/ true, inactiveKey)).isEqualTo(val); // But top is gone from the graph, - assertThat(tester.driver.getEntryForTesting(topKey)).isNull(); + assertThat(tester.evaluator.getExistingEntryAtCurrentlyEvaluatingVersion(topKey)).isNull(); // And we can successfully invalidate and re-evaluate inactive again. tester.getOrCreate(inactiveKey, /*markAsModified=*/ true); tester.invalidate(); @@ -5131,8 +5141,7 @@ private void runTestDuplicateUnfinishedDeps(boolean keepGoing) throws Exception new SkyFunction() { @Nullable @Override - public SkyValue compute(SkyKey skyKey, Environment env) - throws SkyFunctionException, InterruptedException { + public SkyValue compute(SkyKey skyKey, Environment env) { if (keepGoing) { return childValue; } else { @@ -5184,12 +5193,11 @@ public static InconsistencyData create( } /** A graph tester that is specific to the memoizing evaluator, with some convenience methods. */ - protected class MemoizingEvaluatorTester extends GraphTester { + protected final class MemoizingEvaluatorTester extends GraphTester { private RecordingDifferencer differencer; private MemoizingEvaluator evaluator; - private BuildDriver driver; private TrackingProgressReceiver progressReceiver = - createTrackingProgressReceiver(/* checkEvaluationResults= */ true); + createTrackingProgressReceiver(/*checkEvaluationResults=*/ true); private GraphInconsistencyReceiver graphInconsistencyReceiver = GraphInconsistencyReceiver.THROWING; private EventFilter eventFilter = InMemoryMemoizingEvaluator.DEFAULT_STORED_EVENT_FILTER; @@ -5205,7 +5213,6 @@ public void initialize(boolean keepEdges) { graphInconsistencyReceiver, eventFilter, keepEdges); - this.driver = getBuildDriver(evaluator); } /** @@ -5276,7 +5283,15 @@ public EvaluationResult eval( .setNumThreads(numThreads) .setEventHandler(reporter) .build(); - return driver.evaluate(ImmutableList.copyOf(keys), evaluationContext); + BugReport.maybePropagateUnprocessedThrowableIfInTest(); + EvaluationResult result = null; + beforeEvaluation(); + try { + result = evaluator.evaluate(ImmutableList.copyOf(keys), evaluationContext); + return result; + } finally { + afterEvaluation(result, evaluationContext); + } } public EvaluationResult eval(boolean keepGoing, SkyKey... keys) @@ -5316,7 +5331,7 @@ public ErrorInfo evalAndGetError(boolean keepGoing, String key) throws Interrupt @Nullable public SkyValue getExistingValue(SkyKey key) throws InterruptedException { - return driver.getExistingValueForTesting(key); + return evaluator.getExistingValue(key); } @Nullable 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 6b4cb5a7bb93bf..51601c909a30c7 100644 --- a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java @@ -2230,12 +2230,11 @@ public void evaluated( throw new IllegalStateException(); }); - MemoizingEvaluator aug = + MemoizingEvaluator evaluator = new InMemoryMemoizingEvaluator( ImmutableMap.of(GraphTester.NODE_TYPE, tester.getFunction()), new SequencedRecordingDifferencer(), progressReceiver); - SequentialBuildDriver driver = new SequentialBuildDriver(aug); tester .getOrCreate("top1") @@ -2257,20 +2256,20 @@ public void evaluated( .setNumThreads(200) .setEventHandler(reporter) .build(); - driver.evaluate(ImmutableList.of(GraphTester.toSkyKey("top1")), evaluationContext); + evaluator.evaluate(ImmutableList.of(GraphTester.toSkyKey("top1")), evaluationContext); assertThat(enqueuedValues).containsExactlyElementsIn(GraphTester.toSkyKeys("top1", "d1", "d2")); assertThat(evaluatedValues) .containsExactlyElementsIn(GraphTester.toSkyKeys("top1", "d1", "d2")); enqueuedValues.clear(); evaluatedValues.clear(); - driver.evaluate(ImmutableList.of(GraphTester.toSkyKey("top2")), evaluationContext); + evaluator.evaluate(ImmutableList.of(GraphTester.toSkyKey("top2")), evaluationContext); assertThat(enqueuedValues).containsExactlyElementsIn(GraphTester.toSkyKeys("top2", "d3")); assertThat(evaluatedValues).containsExactlyElementsIn(GraphTester.toSkyKeys("top2", "d3")); enqueuedValues.clear(); evaluatedValues.clear(); - driver.evaluate(ImmutableList.of(GraphTester.toSkyKey("top1")), evaluationContext); + evaluator.evaluate(ImmutableList.of(GraphTester.toSkyKey("top1")), evaluationContext); assertThat(enqueuedValues).isEmpty(); assertThat(evaluatedValues).containsExactlyElementsIn(GraphTester.toSkyKeys("top1")); }