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 {