Unconditionally include the spawn metrics in the execution log and delete the --experimental_execution_log_spawn_metrics flag.
PiperOrigin-RevId: 563015767
Change-Id: I49963f0b0ec6f9da3bbad90a6ea80abb467520a1
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java b/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java
index 5cf5e02..8732f66 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java
@@ -442,14 +442,6 @@
public PathFragment executionLogBinaryFile;
@Option(
- name = "experimental_execution_log_spawn_metrics",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help = "Include spawn metrics in the executed spawns log.")
- public boolean executionLogSpawnMetrics;
-
- @Option(
name = "execution_log_json_file",
defaultValue = "null",
category = "verbosity",
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnLogContext.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnLogContext.java
index 92ffaa1..4fa73b3 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SpawnLogContext.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnLogContext.java
@@ -177,50 +177,48 @@
builder.setTargetLabel(spawn.getTargetLabel());
}
- if (executionOptions != null && executionOptions.executionLogSpawnMetrics) {
- SpawnMetrics metrics = result.getMetrics();
- Protos.SpawnMetrics.Builder metricsBuilder = builder.getMetricsBuilder();
- if (metrics.totalTimeInMs() != 0L) {
- metricsBuilder.setTotalTime(millisToProto(metrics.totalTimeInMs()));
- }
- if (metrics.parseTimeInMs() != 0L) {
- metricsBuilder.setParseTime(millisToProto(metrics.parseTimeInMs()));
- }
- if (metrics.networkTimeInMs() != 0L) {
- metricsBuilder.setNetworkTime(millisToProto(metrics.networkTimeInMs()));
- }
- if (metrics.fetchTimeInMs() != 0L) {
- metricsBuilder.setFetchTime(millisToProto(metrics.fetchTimeInMs()));
- }
- if (metrics.queueTimeInMs() != 0L) {
- metricsBuilder.setQueueTime(millisToProto(metrics.queueTimeInMs()));
- }
- if (metrics.setupTimeInMs() != 0L) {
- metricsBuilder.setSetupTime(millisToProto(metrics.setupTimeInMs()));
- }
- if (metrics.uploadTimeInMs() != 0L) {
- metricsBuilder.setUploadTime(millisToProto(metrics.uploadTimeInMs()));
- }
- if (metrics.executionWallTimeInMs() != 0L) {
- metricsBuilder.setExecutionWallTime(millisToProto(metrics.executionWallTimeInMs()));
- }
- if (metrics.processOutputsTimeInMs() != 0L) {
- metricsBuilder.setProcessOutputsTime(millisToProto(metrics.processOutputsTimeInMs()));
- }
- if (metrics.retryTimeInMs() != 0L) {
- metricsBuilder.setRetryTime(millisToProto(metrics.retryTimeInMs()));
- }
- metricsBuilder.setInputBytes(metrics.inputBytes());
- metricsBuilder.setInputFiles(metrics.inputFiles());
- metricsBuilder.setMemoryEstimateBytes(metrics.memoryEstimate());
- metricsBuilder.setInputBytesLimit(metrics.inputBytesLimit());
- metricsBuilder.setInputFilesLimit(metrics.inputFilesLimit());
- metricsBuilder.setOutputBytesLimit(metrics.outputBytesLimit());
- metricsBuilder.setOutputFilesLimit(metrics.outputFilesLimit());
- metricsBuilder.setMemoryBytesLimit(metrics.memoryLimit());
- if (metrics.timeLimitInMs() != 0L) {
- metricsBuilder.setTimeLimit(millisToProto(metrics.timeLimitInMs()));
- }
+ SpawnMetrics metrics = result.getMetrics();
+ Protos.SpawnMetrics.Builder metricsBuilder = builder.getMetricsBuilder();
+ if (metrics.totalTimeInMs() != 0L) {
+ metricsBuilder.setTotalTime(millisToProto(metrics.totalTimeInMs()));
+ }
+ if (metrics.parseTimeInMs() != 0L) {
+ metricsBuilder.setParseTime(millisToProto(metrics.parseTimeInMs()));
+ }
+ if (metrics.networkTimeInMs() != 0L) {
+ metricsBuilder.setNetworkTime(millisToProto(metrics.networkTimeInMs()));
+ }
+ if (metrics.fetchTimeInMs() != 0L) {
+ metricsBuilder.setFetchTime(millisToProto(metrics.fetchTimeInMs()));
+ }
+ if (metrics.queueTimeInMs() != 0L) {
+ metricsBuilder.setQueueTime(millisToProto(metrics.queueTimeInMs()));
+ }
+ if (metrics.setupTimeInMs() != 0L) {
+ metricsBuilder.setSetupTime(millisToProto(metrics.setupTimeInMs()));
+ }
+ if (metrics.uploadTimeInMs() != 0L) {
+ metricsBuilder.setUploadTime(millisToProto(metrics.uploadTimeInMs()));
+ }
+ if (metrics.executionWallTimeInMs() != 0L) {
+ metricsBuilder.setExecutionWallTime(millisToProto(metrics.executionWallTimeInMs()));
+ }
+ if (metrics.processOutputsTimeInMs() != 0L) {
+ metricsBuilder.setProcessOutputsTime(millisToProto(metrics.processOutputsTimeInMs()));
+ }
+ if (metrics.retryTimeInMs() != 0L) {
+ metricsBuilder.setRetryTime(millisToProto(metrics.retryTimeInMs()));
+ }
+ metricsBuilder.setInputBytes(metrics.inputBytes());
+ metricsBuilder.setInputFiles(metrics.inputFiles());
+ metricsBuilder.setMemoryEstimateBytes(metrics.memoryEstimate());
+ metricsBuilder.setInputBytesLimit(metrics.inputBytesLimit());
+ metricsBuilder.setInputFilesLimit(metrics.inputFilesLimit());
+ metricsBuilder.setOutputBytesLimit(metrics.outputBytesLimit());
+ metricsBuilder.setOutputFilesLimit(metrics.outputFilesLimit());
+ metricsBuilder.setMemoryBytesLimit(metrics.memoryLimit());
+ if (metrics.timeLimitInMs() != 0L) {
+ metricsBuilder.setTimeLimit(millisToProto(metrics.timeLimitInMs()));
}
try (SilentCloseable c = Profiler.instance().profile("logSpawn/write")) {
diff --git a/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java
index b604dee..736f24e 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java
@@ -331,7 +331,7 @@
@Test
public void testLogSpawn() throws Exception {
- setUpExecutionContext(/* executionOptions= */ null, /* remoteOptions= */ null);
+ setUpExecutionContext(/* remoteOptions= */ null);
Artifact input = ActionsTestUtil.createArtifact(rootDir, scratch.file("/execroot/foo", "1"));
scratch.file("/execroot/out1", "123");
@@ -402,13 +402,14 @@
.setRunner("runner")
.setWalltime(Duration.getDefaultInstance())
.setTargetLabel("//dummy:label")
+ .setMetrics(Protos.SpawnMetrics.getDefaultInstance())
.build();
verify(messageOutput).write(expectedSpawnLog);
}
@Test
public void testLogSpawn_noPlatform_noLoggedPlatform() throws Exception {
- setUpExecutionContext(/* executionOptions= */ null, /* remoteOptions= */ null);
+ setUpExecutionContext(/* remoteOptions= */ null);
Spawn spawn = new SpawnBuilder("cmd").build();
@@ -435,7 +436,7 @@
" value: \"1\"",
"}");
- setUpExecutionContext(/* executionOptions= */ null, remoteOptions);
+ setUpExecutionContext(remoteOptions);
Spawn spawn = new SpawnBuilder("cmd").build();
assertThrows(
SpawnExecException.class,
@@ -452,10 +453,7 @@
@Test
public void testLogSpawn_spawnMetrics() throws Exception {
- ExecutionOptions executionOptions = Options.getDefaults(ExecutionOptions.class);
- executionOptions.executionLogSpawnMetrics = true;
-
- setUpExecutionContext(executionOptions, /* remoteOptions= */ null);
+ setUpExecutionContext(/* remoteOptions= */ null);
assertThrows(
SpawnExecException.class,
@@ -480,7 +478,7 @@
" name: \"a\"",
" value: \"1\"",
"}");
- setUpExecutionContext(/* executionOptions= */ null, remoteOptions);
+ setUpExecutionContext(remoteOptions);
PlatformInfo platformInfo =
PlatformInfo.builder()
@@ -514,14 +512,17 @@
verify(messageOutput).write(expected); // output will reflect default properties
}
- private void setUpExecutionContext(ExecutionOptions executionOptions, RemoteOptions remoteOptions)
- throws Exception {
+ private void setUpExecutionContext(RemoteOptions remoteOptions) throws Exception {
when(actionExecutionContext.getContext(eq(SpawnCache.class))).thenReturn(SpawnCache.NO_CACHE);
when(actionExecutionContext.getExecRoot()).thenReturn(execRoot);
when(actionExecutionContext.getContext(eq(SpawnLogContext.class)))
.thenReturn(
new SpawnLogContext(
- execRoot, messageOutput, executionOptions, remoteOptions, SyscallCache.NO_CACHE));
+ execRoot,
+ messageOutput,
+ Options.getDefaults(ExecutionOptions.class),
+ remoteOptions,
+ SyscallCache.NO_CACHE));
when(spawnRunner.exec(any(Spawn.class), any(SpawnExecutionContext.class)))
.thenReturn(
new SpawnResult.Builder()
@@ -547,6 +548,7 @@
.setExitCode(23)
.setRemoteCacheable(true)
.setWalltime(Duration.getDefaultInstance())
- .setTargetLabel("//dummy:label");
+ .setTargetLabel("//dummy:label")
+ .setMetrics(Protos.SpawnMetrics.getDefaultInstance());
}
}