Reimplement --quiet using a field in the command server proto.
Rearguard fighting for #4867.
RELNOTES: None.
PiperOrigin-RevId: 688453143
Change-Id: I3f5a2f3f69676b5c5d6941b25b0d4c35a06e6056
diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc
index 1f3d3ba..94c3e2a 100644
--- a/src/main/cpp/blaze.cc
+++ b/src/main/cpp/blaze.cc
@@ -259,6 +259,7 @@
const int connect_timeout_secs_;
const bool batch_;
const bool block_for_lock_;
+ const bool quiet_;
const bool preemptible_;
const blaze_util::Path output_base_;
};
@@ -1563,6 +1564,7 @@
connect_timeout_secs_(startup_options.connect_timeout_secs),
batch_(startup_options.batch),
block_for_lock_(startup_options.block_for_lock),
+ quiet_(startup_options.quiet),
preemptible_(startup_options.preemptible),
output_base_(startup_options.output_base) {
pipe_.reset(blaze_util::CreatePipe());
@@ -1832,6 +1834,7 @@
command_server::RunRequest request;
request.set_cookie(request_cookie_);
request.set_block_for_lock(block_for_lock_);
+ request.set_quiet(quiet_);
request.set_preemptible(preemptible_);
request.set_client_description("pid=" + blaze::GetProcessIdAsString());
for (const string &arg : arg_vector) {
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc
index a934bda..df08aa0 100644
--- a/src/main/cpp/option_processor.cc
+++ b/src/main/cpp/option_processor.cc
@@ -514,13 +514,6 @@
blazerc_and_env_command_args_ =
GetBlazercAndEnvCommandArgs(cwd, rc_file_ptrs, GetProcessedEnv());
- // This is necessary because some code at Google both links in this code and
- // needs to be ready for old versions of Bazel that don't support this
- // argument yet.
- if (startup_options_->quiet) {
- blazerc_and_env_command_args_.push_back(
- "--default_override=0:common=--quiet");
- }
return blaze_exit_code::SUCCESS;
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
index 6c129f0..352a9d4 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
@@ -155,6 +155,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -253,6 +254,7 @@
invocationPolicy,
args,
outErr,
+ uiVerbosity == UiVerbosity.QUIET,
firstContactTimeMillis,
commandName,
command,
@@ -301,6 +303,7 @@
args,
originalOutErr,
LockingMode.ERROR_OUT,
+ UiVerbosity.NORMAL,
clientDescription,
runtime.getClock().currentTimeMillis(),
/* startupOptionsTaggedWithBazelRc= */ Optional.empty(),
@@ -312,6 +315,7 @@
InvocationPolicy invocationPolicy,
List<String> args,
OutErr outErr,
+ boolean quiet,
long firstContactTime,
String commandName,
BlazeCommand command,
@@ -490,7 +494,7 @@
options.getOptions(ExecutionOptions.class) != null
&& options.getOptions(ExecutionOptions.class).statsSummary;
EventHandler handler =
- createEventHandler(outErr, eventHandlerOptions, env, newStatsSummary);
+ createEventHandler(outErr, eventHandlerOptions, quiet, env, newStatsSummary);
reporter.addHandler(handler);
env.getEventBus().register(handler);
@@ -500,7 +504,7 @@
// modified.
if (!eventHandlerOptions.useColor()) {
UiEventHandler ansiAllowingHandler =
- createEventHandler(colorfulOutErr, eventHandlerOptions, env, newStatsSummary);
+ createEventHandler(colorfulOutErr, eventHandlerOptions, quiet, env, newStatsSummary);
reporter.registerAnsiAllowingHandler(handler, ansiAllowingHandler);
env.getEventBus().register(new PassiveExperimentalEventHandler(ansiAllowingHandler));
}
@@ -873,12 +877,17 @@
/** Returns the event handler to use for this Blaze command. */
private UiEventHandler createEventHandler(
- OutErr outErr, UiOptions eventOptions, CommandEnvironment env, boolean newStatsSummary) {
+ OutErr outErr,
+ UiOptions eventOptions,
+ boolean quiet,
+ CommandEnvironment env,
+ boolean newStatsSummary) {
Path workspacePath = runtime.getWorkspace().getDirectories().getWorkspace();
PathFragment workspacePathFragment = workspacePath == null ? null : workspacePath.asFragment();
return new UiEventHandler(
outErr,
eventOptions,
+ quiet,
runtime.getClock(),
env.getEventBus(),
workspacePathFragment,
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index de577eb..cf18676 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -73,6 +73,7 @@
import com.google.devtools.build.lib.query2.query.output.OutputFormatters;
import com.google.devtools.build.lib.runtime.BlazeModule.ModuleFileSystem;
import com.google.devtools.build.lib.runtime.CommandDispatcher.LockingMode;
+import com.google.devtools.build.lib.runtime.CommandDispatcher.UiVerbosity;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.server.CommandProtos.EnvironmentVariable;
import com.google.devtools.build.lib.server.CommandProtos.ExecRequest;
@@ -1007,12 +1008,12 @@
BlazeRuntime runtime;
InvocationPolicy policy;
+ BlazeServerStartupOptions startupOptions;
+
try {
runtime = newRuntime(modules, commandLineOptions.getStartupArgs(), null);
- policy =
- InvocationPolicyParser.parsePolicy(
- runtime.startupOptionsProvider.getOptions(BlazeServerStartupOptions.class)
- .invocationPolicy);
+ startupOptions = runtime.startupOptionsProvider.getOptions(BlazeServerStartupOptions.class);
+ policy = InvocationPolicyParser.parsePolicy(startupOptions.invocationPolicy);
} catch (OptionsParsingException e) {
OutErr.SYSTEM_OUT_ERR.printErrLn(e.getMessage());
return ExitCode.COMMAND_LINE_ERROR.getNumericExitCode();
@@ -1040,6 +1041,7 @@
commandLineOptions.getOtherArgs(),
OutErr.SYSTEM_OUT_ERR,
LockingMode.ERROR_OUT,
+ startupOptions.quiet ? UiVerbosity.QUIET : UiVerbosity.NORMAL,
"batch client",
runtime.clock.currentTimeMillis(),
Optional.of(startupOptionsFromCommandLine.build()),
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandDispatcher.java
index c090a78..ffd9929 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandDispatcher.java
@@ -33,6 +33,12 @@
ERROR_OUT, // Return with an error
}
+ /** How much output to emit on the console. */
+ enum UiVerbosity {
+ QUIET, // Only errors
+ NORMAL, // Everything
+ }
+
/**
* Executes a single command. Returns a {@link BlazeCommandResult} to indicate either an exit
* code, the desire to shut down the server, or that a given binary should be executed by the
@@ -43,6 +49,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/UiEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/UiEventHandler.java
index d74d8bf..c7af1df8 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/UiEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/UiEventHandler.java
@@ -166,6 +166,7 @@
public UiEventHandler(
OutErr outErr,
UiOptions options,
+ boolean quiet,
Clock clock,
EventBus eventBus,
@Nullable PathFragment workspacePathFragment,
@@ -177,7 +178,7 @@
OutErr.create(
new FullyBufferedOutputStream(outErr.getOutputStream()),
new FullyBufferedOutputStream(outErr.getErrorStream()));
- this.quiet = options.quiet;
+ this.quiet = quiet;
this.cursorControl = options.useCursorControl();
this.terminal = new AnsiTerminal(this.outErr.getErrorStream());
this.showProgress = options.showProgress;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/UiOptions.java b/src/main/java/com/google/devtools/build/lib/runtime/UiOptions.java
index d8e9143..ca6e8eb 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/UiOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/UiOptions.java
@@ -128,14 +128,6 @@
}
@Option(
- name = "quiet",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
- effectTags = {OptionEffectTag.UNKNOWN},
- help = "If set, Bazel prints as little output as possible.")
- public boolean quiet;
-
- @Option(
name = "show_progress",
defaultValue = "true",
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
diff --git a/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java b/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java
index 38c701a..03ad8b8 100644
--- a/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/server/GrpcServerImpl.java
@@ -26,6 +26,7 @@
import com.google.devtools.build.lib.runtime.BlazeCommandResult;
import com.google.devtools.build.lib.runtime.CommandDispatcher;
import com.google.devtools.build.lib.runtime.CommandDispatcher.LockingMode;
+import com.google.devtools.build.lib.runtime.CommandDispatcher.UiVerbosity;
import com.google.devtools.build.lib.runtime.SafeRequestLogging;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.server.CommandManager.RunningCommand;
@@ -609,6 +610,7 @@
args,
rpcOutErr,
request.getBlockForLock() ? LockingMode.WAIT : LockingMode.ERROR_OUT,
+ request.getQuiet() ? UiVerbosity.QUIET : UiVerbosity.NORMAL,
request.getClientDescription(),
clock.currentTimeMillis(),
Optional.of(startupOptions.build()),
diff --git a/src/main/protobuf/command_server.proto b/src/main/protobuf/command_server.proto
index 44de0b4..208b79a 100644
--- a/src/main/protobuf/command_server.proto
+++ b/src/main/protobuf/command_server.proto
@@ -43,6 +43,10 @@
// the server will return an error immediately.
bool block_for_lock = 3;
+ // Whether the server should restrict itself to emitting only errors on the
+ // console.
+ bool quiet = 9;
+
// A simple description of the client for reporting purposes. This value is
// required.
string client_description = 4;
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherTest.java
index addf2d6..b07be04 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherTest.java
@@ -35,6 +35,7 @@
import com.google.devtools.build.lib.profiler.MemoryProfiler;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.runtime.CommandDispatcher.LockingMode;
+import com.google.devtools.build.lib.runtime.CommandDispatcher.UiVerbosity;
import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.server.FailureDetails;
import com.google.devtools.build.lib.server.FailureDetails.BuildProgress;
@@ -475,6 +476,7 @@
ImmutableList.of("bar"),
outErr,
LockingMode.WAIT,
+ UiVerbosity.NORMAL,
"test client",
runtime.getClock().currentTimeMillis(),
/* startupOptionsTaggedWithBazelRc= */ Optional.empty(),
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/UiEventHandlerStdOutAndStdErrTest.java b/src/test/java/com/google/devtools/build/lib/runtime/UiEventHandlerStdOutAndStdErrTest.java
index ebd9eb9..7c3ae7b 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/UiEventHandlerStdOutAndStdErrTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/UiEventHandlerStdOutAndStdErrTest.java
@@ -89,6 +89,7 @@
new UiEventHandler(
outErr,
uiOptions,
+ false,
new ManualClock(),
new EventBus(),
/* workspacePathFragment= */ null,
diff --git a/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java b/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java
index c8e6deb..8260a38 100644
--- a/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/server/GrpcServerTest.java
@@ -140,6 +140,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -187,7 +188,16 @@
CountDownLatch beforeThirdExtensionLatch = new CountDownLatch(1);
CountDownLatch afterThirdExtensionLatch = new CountDownLatch(1);
CommandDispatcher dispatcher =
- (policy, args, outErr, lockMode, clientDesc, startMs, startOpts, cmdExts, cmdExtOut) -> {
+ (policy,
+ args,
+ outErr,
+ lockMode,
+ uiVerbosity,
+ clientDesc,
+ startMs,
+ startOpts,
+ cmdExts,
+ cmdExtOut) -> {
// Send the first extension.
cmdExtOut.report(commandExtension1);
afterFirstExtensionLatch.countDown();
@@ -243,6 +253,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -291,6 +302,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -435,6 +447,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -496,6 +509,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -586,6 +600,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -681,6 +696,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -782,6 +798,7 @@
List<String> args,
OutErr outErr,
LockingMode lockingMode,
+ UiVerbosity uiVerbosity,
String clientDescription,
long firstContactTimeMillis,
Optional<List<Pair<String, String>>> startupOptionsTaggedWithBazelRc,
@@ -1147,6 +1164,7 @@
args,
outErr,
lockingMode,
+ uiVerbosity,
clientDescription,
firstContactTimeMillis,
startupOptionsTaggedWithBazelRc,