diff options
author | Klaus Aehlig <aehlig@google.com> | 2017-09-27 06:08:59 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-09-27 10:01:38 -0400 |
commit | be9a0d05048d5e2b04a1016cecaa3086bcba2dc7 (patch) | |
tree | 01ebdf120f514969339895c23eaa14d5052a6980 | |
parent | ab2fd25e1d915f79af4ab9195602be4cb6652cb1 (diff) |
ExperimentalEventHandler: clean up in afterCommand
The experimental event handler honors the AfterCommandEvent
which tells to clean up resources. Do so properly, by also
flushing output and resetting the terminal (and then flushing
it). As a nice side effect, this event handler does not need
a separate release handling from the command dispatcher.
Change-Id: If93cfa1b0f8d12e94fa4f57c9e2ee67362bd7d11
PiperOrigin-RevId: 170175617
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java | 15 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 15 |
2 files changed, 11 insertions, 19 deletions
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 df97889f53..a8807acdaa 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 @@ -620,10 +620,10 @@ public class BlazeCommandDispatcher { System.setOut(savedOut); System.setErr(savedErr); reporter.removeHandler(handler); - releaseHandler(handler, eventHandlerOptions); + releaseHandler(handler); if (!eventHandlerOptions.useColor()) { reporter.removeHandler(ansiAllowingHandler); - releaseHandler(ansiAllowingHandler, eventHandlerOptions); + releaseHandler(ansiAllowingHandler); } env.getTimestampGranularityMonitor().waitForTimestampGranularity(outErr); } @@ -976,20 +976,13 @@ public class BlazeCommandDispatcher { return RateLimitingEventHandler.create(eventHandler, eventOptions.showProgressRateLimit); } - /** - * Unsets the event handler. - */ - private void releaseHandler(EventHandler eventHandler, - BlazeCommandEventHandler.Options eventOptions) { + /** Unsets the event handler. */ + private void releaseHandler(EventHandler eventHandler) { if (eventHandler instanceof FancyTerminalEventHandler) { // Make sure that the terminal state of the old event handler is clear // before creating a new one. ((FancyTerminalEventHandler) eventHandler).resetTerminal(); } - if ((eventHandler instanceof ExperimentalEventHandler) - && (eventOptions.useColor())) { - ((ExperimentalEventHandler) eventHandler).resetTerminal(); - } } /** 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 169c86979c..7b243546b4 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 @@ -518,6 +518,13 @@ public class ExperimentalEventHandler implements EventHandler { buildRunning = true; } stopUpdateThread(); + flushStdOutStdErrBuffers(); + try { + terminal.resetTerminal(); + terminal.flush(); + } catch (IOException e) { + logger.warning("IO Error writing to user terminal: " + e); + } } @Subscribe @@ -779,14 +786,6 @@ public class ExperimentalEventHandler implements EventHandler { } } - public void resetTerminal() { - try { - terminal.resetTerminal(); - } catch (IOException e) { - logger.warning("IO Error writing to user terminal: " + e); - } - } - private void clearProgressBar() throws IOException { if (!cursorControl) { return; |