Add profiling for external repository download and extraction. RELNOTES: None PiperOrigin-RevId: 279729299
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index aed9942..d56e086 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -956,6 +956,7 @@ "//src/main/java/com/google/devtools/build/lib/bazel/repository/cache:events", "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader", "//src/main/java/com/google/devtools/build/lib/concurrent", + "//src/main/java/com/google/devtools/build/lib/profiler", "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository", "//src/main/java/com/google/devtools/build/lib/vfs",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java index 8bb7f8c..26a3d46 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
@@ -42,6 +42,8 @@ import com.google.devtools.build.lib.packages.StructImpl; import com.google.devtools.build.lib.packages.StructProvider; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; +import com.google.devtools.build.lib.profiler.Profiler; +import com.google.devtools.build.lib.profiler.SilentCloseable; import com.google.devtools.build.lib.rules.repository.RepositoryFunction; import com.google.devtools.build.lib.rules.repository.RepositoryFunction.RepositoryFunctionException; import com.google.devtools.build.lib.rules.repository.WorkspaceAttributeMapper; @@ -619,7 +621,8 @@ location); env.getListener().post(w); Path downloadedPath; - try { + try (SilentCloseable c = + Profiler.instance().profile("fetching: " + rule.getLabel().toString())) { checkInOutputDirectory("write", outputPath); makeDirectories(outputPath.getPath()); downloadedPath = @@ -737,7 +740,8 @@ createDirectory(outputPath.getPath()); Path downloadedPath; - try { + try (SilentCloseable c = + Profiler.instance().profile("fetching: " + rule.getLabel().toString())) { downloadedPath = httpDownloader.download( urls, @@ -766,14 +770,17 @@ throw checksumValidation; } env.getListener().post(w); - DecompressorValue.decompress( - DecompressorDescriptor.builder() - .setTargetKind(rule.getTargetKind()) - .setTargetName(rule.getName()) - .setArchivePath(downloadedPath) - .setRepositoryPath(outputPath.getPath()) - .setPrefix(stripPrefix) - .build()); + try (SilentCloseable c = + Profiler.instance().profile("extracting: " + rule.getLabel().toString())) { + DecompressorValue.decompress( + DecompressorDescriptor.builder() + .setTargetKind(rule.getTargetKind()) + .setTargetName(rule.getName()) + .setArchivePath(downloadedPath) + .setRepositoryPath(outputPath.getPath()) + .setPrefix(stripPrefix) + .build()); + } StructImpl downloadResult = calculateDownloadResult(checksum, downloadedPath); try {