aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-06-24 11:28:00 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-06-24 11:34:28 +0000
commitbd4dff8696656d9fd4885af2980dae62c41bc0f7 (patch)
tree7b8068ee93943503b5991885a6143a59bf4252bb /src/main/java/com/google/devtools/build
parent928a49c60e1b1d39bf48df6c165ca3f08d0bea1f (diff)
experimental UI: flush buffers
At the end of the build (or when realizing that there will be no build phase), the experimental UI drops into full streaming mode. When doing so, do not forget to flush all buffered incomplete lines for stdout and stderr. -- MOS_MIGRATED_REVID=125770854
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
index cbe3755de7..8c5062a7b3 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
@@ -104,6 +104,19 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler {
ignoreRefreshLimitOnce();
}
+ private synchronized void flushStdOutStdErrBuffers() {
+ try {
+ outErr.getOutputStream().write(stdoutBuffer);
+ outErr.getOutputStream().flush();
+ stdoutBuffer = new byte[] {};
+ outErr.getErrorStream().write(stderrBuffer);
+ outErr.getErrorStream().flush();
+ stderrBuffer = new byte[] {};
+ } catch (IOException e) {
+ LOG.warning("IO Error writing to output stream: " + e);
+ }
+ }
+
@Override
public synchronized void handle(Event event) {
try {
@@ -162,12 +175,7 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler {
if (showProgress && !buildComplete) {
clearProgressBar();
}
- outErr.getOutputStream().write(stdoutBuffer);
- outErr.getOutputStream().flush();
- stdoutBuffer = new byte[] {};
- outErr.getErrorStream().write(stderrBuffer);
- outErr.getErrorStream().flush();
- stderrBuffer = new byte[] {};
+ flushStdOutStdErrBuffers();
crlf();
setEventKindColor(event.getKind());
terminal.writeString(event.getKind() + ": ");
@@ -267,12 +275,14 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler {
refresh();
buildComplete = true;
stopUpdateThread();
+ flushStdOutStdErrBuffers();
}
@Subscribe
public void noBuild(NoBuildEvent event) {
buildComplete = true;
stopUpdateThread();
+ flushStdOutStdErrBuffers();
}
@Subscribe