diff options
author | Klaus Aehlig <aehlig@google.com> | 2018-01-11 00:23:45 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-11 00:25:44 -0800 |
commit | ad0d7e946cd2ad05ec89c78a2f1959ffbbfa12a8 (patch) | |
tree | fb5015562b77f894215f4c7f470001847294c4aa /src/main/java/com/google/devtools/build/lib/buildeventservice | |
parent | 38ba193c60c027157b55088a7aebb76ef293caf2 (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')
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; } |