aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2017-09-27 06:08:59 -0400
committerGravatar John Cater <jcater@google.com>2017-09-27 10:01:38 -0400
commitbe9a0d05048d5e2b04a1016cecaa3086bcba2dc7 (patch)
tree01ebdf120f514969339895c23eaa14d5052a6980
parentab2fd25e1d915f79af4ab9195602be4cb6652cb1 (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.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java15
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;