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
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java
index 01c01ae..684b419 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java
@@ -61,6 +61,7 @@
import com.google.devtools.build.lib.remote.common.BulkTransferException;
import com.google.devtools.build.lib.remote.common.OperationObserver;
import com.google.devtools.build.lib.remote.options.RemoteOptions;
+import com.google.devtools.build.lib.remote.options.RemoteOptions.ExecutionMessagePrintMode;
import com.google.devtools.build.lib.remote.util.Utils;
import com.google.devtools.build.lib.remote.util.Utils.InMemoryOutput;
import com.google.devtools.build.lib.sandbox.SandboxHelpers;
@@ -274,7 +275,17 @@
FileOutErr outErr = context.getFileOutErr();
String message = result.getMessage();
- if (!result.success() && !message.isEmpty()) {
+ boolean printMessage =
+ ((!result.success()
+ && remoteOptions.remotePrintExecutionMessages
+ == ExecutionMessagePrintMode.FAILURE)
+ || (result.success()
+ && remoteOptions.remotePrintExecutionMessages
+ == ExecutionMessagePrintMode.SUCCESS)
+ || remoteOptions.remotePrintExecutionMessages
+ == ExecutionMessagePrintMode.ALL)
+ && !message.isEmpty();
+ if (printMessage) {
outErr.printErr(message + "\n");
}
diff --git a/src/main/java/com/google/devtools/build/lib/remote/options/RemoteOptions.java b/src/main/java/com/google/devtools/build/lib/remote/options/RemoteOptions.java
index cf5621b..507a221 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/options/RemoteOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/options/RemoteOptions.java
@@ -574,6 +574,19 @@
help = "Maximum number of open files allowed during BEP artifact upload.")
public int maximumOpenFiles;
+ @Option(
+ name = "remote_print_execution_messages",
+ defaultValue = "failure",
+ converter = ExecutionMessagePrintMode.Converter.class,
+ category = "remote",
+ documentationCategory = OptionDocumentationCategory.LOGGING,
+ effectTags = {OptionEffectTag.TERMINAL_OUTPUT},
+ help =
+ "Choose when to print remote execution messages. Valid values are `failure`, "
+ + "to print only on failures, `success` to print only on successes and "
+ + "`all` to print always.")
+ public ExecutionMessagePrintMode remotePrintExecutionMessages;
+
// The below options are not configurable by users, only tests.
// This is part of the effort to reduce the overall number of flags.
@@ -643,4 +656,18 @@
.setRemoteExecution(RemoteExecution.newBuilder().setCode(detailedCode))
.build();
}
+
+ /** An enum for specifying different modes for printing remote execution messages. */
+ public enum ExecutionMessagePrintMode {
+ FAILURE, // Print execution messages only on failure
+ SUCCESS, // Print execution messages only on success
+ ALL; // Print execution messages always
+
+ /** Converts to {@link ExecutionMessagePrintMode}. */
+ public static class Converter extends EnumConverter<ExecutionMessagePrintMode> {
+ public Converter() {
+ super(ExecutionMessagePrintMode.class, "execution message print mode");
+ }
+ }
+ }
}