Skip to content

Commit ad7957a

Browse files
Report remote execution messages as events (#18780)
Currently the message is appended to a spawn's stderr, which pollutes that output. It also means that whether a message is output is gated by the `--output_filter` flag, which is surprising - metadata messages don't feel like "output" in the same way `--output_filter` applies to. Instead, emit the message as a top-level message to the terminal. Closes #18757. PiperOrigin-RevId: 543365674 Change-Id: I9874c8a0946a3156a2c17a2962880184d3aeebe0 Co-authored-by: Daniel Wagner-Hall <[email protected]>
1 parent 362540c commit ad7957a

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
import com.google.devtools.build.lib.server.FailureDetails;
6969
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
7070
import com.google.devtools.build.lib.util.ExitCode;
71-
import com.google.devtools.build.lib.util.io.FileOutErr;
7271
import com.google.devtools.build.lib.vfs.Path;
7372
import com.google.devtools.build.lib.vfs.PathFragment;
7473
import com.google.longrunning.Operation;
@@ -274,7 +273,7 @@ public SpawnResult exec(Spawn spawn, SpawnExecutionContext context)
274273
// It's already late at this stage, but we should at least report once.
275274
reporter.reportExecutingIfNot();
276275

277-
maybePrintExecutionMessages(context, result.getMessage(), result.success());
276+
maybePrintExecutionMessages(spawn, result.getMessage(), result.success());
278277

279278
profileAccounting(result.getExecutionMetadata());
280279
spawnMetricsAccounting(spawnMetrics, result.getExecutionMetadata());
@@ -445,14 +444,16 @@ public boolean handlesCaching() {
445444
return true;
446445
}
447446

448-
private void maybePrintExecutionMessages(
449-
SpawnExecutionContext context, String message, boolean success) {
450-
FileOutErr outErr = context.getFileOutErr();
447+
private void maybePrintExecutionMessages(Spawn spawn, String message, boolean success) {
451448
boolean printMessage =
452449
remoteOptions.remotePrintExecutionMessages.shouldPrintMessages(success)
453450
&& !message.isEmpty();
454451
if (printMessage) {
455-
outErr.printErr(message + "\n");
452+
report(
453+
Event.info(
454+
String.format(
455+
"Remote execution message for %s %s: %s",
456+
spawn.getMnemonic(), spawn.getTargetLabel(), message)));
456457
}
457458
}
458459

@@ -534,7 +535,8 @@ private SpawnResult handleError(
534535
}
535536
}
536537
if (e.isExecutionTimeout()) {
537-
maybePrintExecutionMessages(context, e.getResponse().getMessage(), /* success = */ false);
538+
maybePrintExecutionMessages(
539+
action.getSpawn(), e.getResponse().getMessage(), /* success= */ false);
538540
return new SpawnResult.Builder()
539541
.setRunnerName(getName())
540542
.setStatus(Status.TIMEOUT)

0 commit comments

Comments
 (0)