diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 21 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java | 4 |
2 files changed, 17 insertions, 8 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 62850557f5..aea47c8810 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 @@ -13,8 +13,6 @@ // limitations under the License. package com.google.devtools.build.lib.runtime; -import static com.google.devtools.build.lib.util.Preconditions.checkState; - import com.google.common.collect.ImmutableSet; import com.google.common.eventbus.Subscribe; import com.google.common.primitives.Bytes; @@ -25,6 +23,7 @@ import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.analysis.AnalysisPhaseCompleteEvent; import com.google.devtools.build.lib.analysis.NoBuildEvent; import com.google.devtools.build.lib.buildeventstream.AnnounceBuildEventTransportsEvent; +import com.google.devtools.build.lib.buildeventstream.BuildEventTransport; import com.google.devtools.build.lib.buildeventstream.BuildEventTransportClosedEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildStartingEvent; @@ -92,7 +91,6 @@ public class ExperimentalEventHandler implements EventHandler { private int numLinesProgressBar; private boolean buildComplete; // Number of open build even protocol transports. - private int openBepTransports; private boolean progressBarNeedsRefresh; private Thread updateThread; private byte[] stdoutBuffer; @@ -445,7 +443,7 @@ public class ExperimentalEventHandler implements EventHandler { // After a build has completed, only stop updating the UI if there is no more BEP // upload happening. - if (openBepTransports == 0) { + if (stateTracker.pendingTransports() == 0) { buildComplete = true; stopUpdateThread(); flushStdOutStdErrBuffers(); @@ -555,17 +553,24 @@ public class ExperimentalEventHandler implements EventHandler { @Subscribe public synchronized void buildEventTransportsAnnounced(AnnounceBuildEventTransportsEvent event) { - openBepTransports += event.transports().size(); stateTracker.buildEventTransportsAnnounced(event); + if (debugAllEvents) { + String message = "Transports announced:"; + for (BuildEventTransport transport : event.transports()) { + message += " " + transport.name(); + } + this.handle(Event.info(null, message)); + } } @Subscribe public synchronized void buildEventTransportClosed(BuildEventTransportClosedEvent event) { - checkState(openBepTransports > 0); - openBepTransports--; stateTracker.buildEventTransportClosed(event); + if (debugAllEvents) { + this.handle(Event.info(null, "Transport " + event.transport().name() + " closed")); + } - if (openBepTransports == 0) { + if (stateTracker.pendingTransports() == 0) { stopUpdateThread(); flushStdOutStdErrBuffers(); ignoreRefreshLimitOnce(); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java index 51e67b77b3..ea6329d94e 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java @@ -502,6 +502,10 @@ class ExperimentalStateTracker { bepOpenTransports.remove(event.transport()); } + synchronized int pendingTransports() { + return bepOpenTransports.size(); + } + /*** * Predicate indicating whether the contents of the progress bar can change, if the * only thing that happens is that time passes; this is the case, e.g., if the progress |