bazel packages: log BUILD file computation steps if >1e6
Use this command to extract information from the log after a command:
$ awk '/BUILD file computation/ {print $5, $10}' $(bazel info server_log 2>/dev/null)
See also github.com/bazelbuild/bazel/issues/11018
RELNOTES: N/A
PiperOrigin-RevId: 303398362
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BUILD b/src/main/java/com/google/devtools/build/lib/packages/BUILD
index 144e776..b92124a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/packages/BUILD
@@ -47,6 +47,7 @@
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:build_java_proto",
"//third_party:auto_value",
+ "//third_party:flogger",
"//third_party:guava",
"//third_party:jsr305",
"//third_party/protobuf:protobuf_java",
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index 6c3e6b3..d9d752a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -19,6 +19,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelConstants;
import com.google.devtools.build.lib.cmdline.LabelValidator;
@@ -92,8 +93,11 @@
*/
public final class PackageFactory {
+ // Used only for a single test (that looks long obsolete).
private static final Logger logger = Logger.getLogger(PackageFactory.class.getName());
+ private static final GoogleLogger glogger = GoogleLogger.forEnclosingClass();
+
/** An extension to the global namespace of the BUILD language. */
// TODO(bazel-team): this is largely unrelated to syntax.StarlarkThread.Extension,
// and should probably be renamed PackageFactory.RuntimeExtension, since really,
@@ -682,6 +686,12 @@
"BUILD file computation took %d steps, but --max_computation_steps=%d",
steps, maxSteps));
}
+ // Write a log message for BUILD files with more than 1e6 steps
+ // (approximately the top 1% in Google's code base).
+ if (steps > 1_000_000) {
+ glogger.atInfo().log(
+ "%s: BUILD file computation took %d steps", pkg.getPackageIdentifier(), steps);
+ }
packageBuilderHelper.onLoadingCompleteAndSuccessful(pkg, starlarkSemantics, loadTimeNanos);
}