diff --git a/src/main/java/com/google/devtools/build/lib/runtime/UiStateTracker.java b/src/main/java/com/google/devtools/build/lib/runtime/UiStateTracker.java index eef7ea5c64ae7c..99f9ce1e0fe69c 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/UiStateTracker.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/UiStateTracker.java @@ -526,6 +526,11 @@ private ActionState getActionState( return activeActions.computeIfAbsent(actionId, (key) -> new ActionState(action, nanoTimeNow)); } + @Nullable + private ActionState getActionStateIfPresent(Artifact actionId) { + return activeActions.get(actionId); + } + void actionStarted(ActionStartedEvent event) { Action action = event.getAction(); Artifact actionId = action.getPrimaryOutput(); @@ -579,10 +584,12 @@ void runningAction(RunningActionEvent event) { } void actionProgress(ActionProgressEvent event) { - ActionExecutionMetadata action = event.action(); Artifact actionId = event.action().getPrimaryOutput(); long now = clock.nanoTime(); - getActionState(action, actionId, now).onProgressEvent(event, now); + ActionState actionState = getActionStateIfPresent(actionId); + if (actionState != null) { + actionState.onProgressEvent(event, now); + } } void actionCompletion(ActionScanningCompletedEvent event) { diff --git a/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java index 197ac415e72114..47cf3cc4f50508 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/UiStateTrackerTest.java @@ -601,6 +601,7 @@ public void actionProgress_visible() throws Exception { ManualClock clock = new ManualClock(); Action action = createDummyAction("Some random action"); UiStateTracker stateTracker = new UiStateTracker(clock, /* targetWidth= */ 70); + stateTracker.actionStarted(new ActionStartedEvent(action, clock.nanoTime())); stateTracker.actionProgress( ActionProgressEvent.create(action, "action-id", "action progress", false)); LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true); @@ -619,6 +620,7 @@ public void actionProgress_withTooSmallWidth_progressSkipped() throws Exception ManualClock clock = new ManualClock(); Action action = createDummyAction("Some random action"); UiStateTracker stateTracker = new UiStateTracker(clock, /* targetWidth= */ 30); + stateTracker.actionStarted(new ActionStartedEvent(action, clock.nanoTime())); stateTracker.actionProgress( ActionProgressEvent.create(action, "action-id", "action progress", false)); LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true); @@ -637,6 +639,7 @@ public void actionProgress_withSmallWidth_progressShortened() throws Exception { ManualClock clock = new ManualClock(); Action action = createDummyAction("Some random action"); UiStateTracker stateTracker = new UiStateTracker(clock, /* targetWidth= */ 50); + stateTracker.actionStarted(new ActionStartedEvent(action, clock.nanoTime())); stateTracker.actionProgress( ActionProgressEvent.create(action, "action-id", "action progress", false)); LoggingTerminalWriter terminalWriter = new LoggingTerminalWriter(/*discardHighlight=*/ true); @@ -655,6 +658,7 @@ public void actionProgress_multipleProgress_displayInOrder() throws Exception { ManualClock clock = new ManualClock(); Action action = createDummyAction("Some random action"); UiStateTracker stateTracker = new UiStateTracker(clock, /* targetWidth= */ 70); + stateTracker.actionStarted(new ActionStartedEvent(action, clock.nanoTime())); stateTracker.actionProgress( ActionProgressEvent.create(action, "action-id1", "action progress 1", false)); stateTracker.actionProgress(