Skip to content

Commit 8b57c58

Browse files
exosoncopybara-github
authored andcommitted
Implement --remote_force_print_messages
Adds a flag for always printing messages returned by remotely executed actions. Closes #15557. PiperOrigin-RevId: 455079196 Change-Id: Iae8f150c7b28b881861ae99191dedbce50540153
1 parent c26ec2d commit 8b57c58

2 files changed

Lines changed: 39 additions & 1 deletion

File tree

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import com.google.devtools.build.lib.remote.common.BulkTransferException;
6262
import com.google.devtools.build.lib.remote.common.OperationObserver;
6363
import com.google.devtools.build.lib.remote.options.RemoteOptions;
64+
import com.google.devtools.build.lib.remote.options.RemoteOptions.ExecutionMessagePrintMode;
6465
import com.google.devtools.build.lib.remote.util.Utils;
6566
import com.google.devtools.build.lib.remote.util.Utils.InMemoryOutput;
6667
import com.google.devtools.build.lib.sandbox.SandboxHelpers;
@@ -274,7 +275,17 @@ public SpawnResult exec(Spawn spawn, SpawnExecutionContext context)
274275

275276
FileOutErr outErr = context.getFileOutErr();
276277
String message = result.getMessage();
277-
if (!result.success() && !message.isEmpty()) {
278+
boolean printMessage =
279+
((!result.success()
280+
&& remoteOptions.remotePrintExecutionMessages
281+
== ExecutionMessagePrintMode.FAILURE)
282+
|| (result.success()
283+
&& remoteOptions.remotePrintExecutionMessages
284+
== ExecutionMessagePrintMode.SUCCESS)
285+
|| remoteOptions.remotePrintExecutionMessages
286+
== ExecutionMessagePrintMode.ALL)
287+
&& !message.isEmpty();
288+
if (printMessage) {
278289
outErr.printErr(message + "\n");
279290
}
280291

src/main/java/com/google/devtools/build/lib/remote/options/RemoteOptions.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,19 @@ public RemoteOutputsStrategyConverter() {
574574
help = "Maximum number of open files allowed during BEP artifact upload.")
575575
public int maximumOpenFiles;
576576

577+
@Option(
578+
name = "remote_print_execution_messages",
579+
defaultValue = "failure",
580+
converter = ExecutionMessagePrintMode.Converter.class,
581+
category = "remote",
582+
documentationCategory = OptionDocumentationCategory.LOGGING,
583+
effectTags = {OptionEffectTag.TERMINAL_OUTPUT},
584+
help =
585+
"Choose when to print remote execution messages. Valid values are `failure`, "
586+
+ "to print only on failures, `success` to print only on successes and "
587+
+ "`all` to print always.")
588+
public ExecutionMessagePrintMode remotePrintExecutionMessages;
589+
577590
// The below options are not configurable by users, only tests.
578591
// This is part of the effort to reduce the overall number of flags.
579592

@@ -643,4 +656,18 @@ private static FailureDetail createFailureDetail(String message, Code detailedCo
643656
.setRemoteExecution(RemoteExecution.newBuilder().setCode(detailedCode))
644657
.build();
645658
}
659+
660+
/** An enum for specifying different modes for printing remote execution messages. */
661+
public enum ExecutionMessagePrintMode {
662+
FAILURE, // Print execution messages only on failure
663+
SUCCESS, // Print execution messages only on success
664+
ALL; // Print execution messages always
665+
666+
/** Converts to {@link ExecutionMessagePrintMode}. */
667+
public static class Converter extends EnumConverter<ExecutionMessagePrintMode> {
668+
public Converter() {
669+
super(ExecutionMessagePrintMode.class, "execution message print mode");
670+
}
671+
}
672+
}
646673
}

0 commit comments

Comments
 (0)