diff options
author | 2016-06-24 11:28:00 +0000 | |
---|---|---|
committer | 2016-06-24 11:34:28 +0000 | |
commit | bd4dff8696656d9fd4885af2980dae62c41bc0f7 (patch) | |
tree | 7b8068ee93943503b5991885a6143a59bf4252bb /src/main/java/com | |
parent | 928a49c60e1b1d39bf48df6c165ca3f08d0bea1f (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')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 22 |
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 |