aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildeventservice
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-01-11 00:23:45 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-11 00:25:44 -0800
commitad0d7e946cd2ad05ec89c78a2f1959ffbbfa12a8 (patch)
treefb5015562b77f894215f4c7f470001847294c4aa /src/main/java/com/google/devtools/build/lib/buildeventservice
parent38ba193c60c027157b55088a7aebb76ef293caf2 (diff)
BEP: make stdout/stderr buffering configurable
For different applications, different size of buffered stdout/stderr might be acceptable; essentially it is a trade off between latency and number of messages generated. Put this trade off into the control of the user by adding an appropriate flag. Change-Id: I8fb4d19a336205fa28d01340f2f0b2be9b4a24f3 PiperOrigin-RevId: 181570242
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildeventservice')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java12
2 files changed, 16 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
index 22efe8e79d..3998c36b9a 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
@@ -91,9 +91,11 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions
if (streamer != null) {
commandEnvironment.getReporter().addHandler(streamer);
commandEnvironment.getEventBus().register(streamer);
+ long bufferSize =
+ commandEnvironment.getOptions().getOptions(optionsClass()).besOuterrBufferSize;
- final SynchronizedOutputStream out = new SynchronizedOutputStream();
- final SynchronizedOutputStream err = new SynchronizedOutputStream();
+ final SynchronizedOutputStream out = new SynchronizedOutputStream(bufferSize);
+ final SynchronizedOutputStream err = new SynchronizedOutputStream(bufferSize);
this.outErr = OutErr.create(out, err);
streamer.registerOutErrProvider(
new BuildEventStreamer.OutErrProvider() {
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java
index fda0ac936c..0d1adae243 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java
@@ -92,4 +92,16 @@ public class BuildEventServiceOptions extends OptionsBase {
+ "Defaults to none."
)
public List<String> besKeywords;
+
+ @Option(
+ name = "bes_outerr_buffer_size",
+ defaultValue = "10240",
+ documentationCategory = OptionDocumentationCategory.LOGGING,
+ effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
+ help =
+ "Specifies the maximal size of stdout or stderr to be buffered in BEP, before it is "
+ + "reported as a progress event. Individual writes are still reported in a single "
+ + "event, even if larger than the specified value."
+ )
+ public long besOuterrBufferSize;
}