Browse Source

Fix bug of sometimes not terminating broadcast when paused with large number of service threads.

This happens when all remaining jobs are being serviced by
service threads when PAUSE is initiated.  Similarly fixed
for CANCEL.
tags/1.0.11
ymlam 3 years ago
parent
commit
7b4d88b9f8
1 changed files with 6 additions and 1 deletions
  1. +6
    -1
      src/main/java/altk/comm/engine/Broadcast.java

+ 6
- 1
src/main/java/altk/comm/engine/Broadcast.java View File

@@ -220,6 +220,7 @@ public abstract class Broadcast
toStates.put(BroadcastState.CANCELING, Arrays.asList( toStates.put(BroadcastState.CANCELING, Arrays.asList(
BroadcastState.ABORTING, BroadcastState.ABORTING,
BroadcastState.ABORTED, BroadcastState.ABORTED,
BroadcastState.COMPLETED,
BroadcastState.CANCELED, // User action BroadcastState.CANCELED, // User action
BroadcastState.PURGED // User action BroadcastState.PURGED // User action
)); ));
@@ -233,6 +234,7 @@ public abstract class Broadcast
// Transitions from PAUSING // Transitions from PAUSING
toStates.put(BroadcastState.PAUSING, Arrays.asList( toStates.put(BroadcastState.PAUSING, Arrays.asList(
BroadcastState.RUNNING, // User action BroadcastState.RUNNING, // User action
BroadcastState.COMPLETED,
BroadcastState.ABORTING, BroadcastState.ABORTING,
BroadcastState.CANCELED, // User action BroadcastState.CANCELED, // User action
BroadcastState.PAUSED, BroadcastState.PAUSED,
@@ -1182,7 +1184,10 @@ public abstract class Broadcast
serviceActivityCount += increment; serviceActivityCount += increment;
if (increment < 0 && serviceActivityCount <= 0) if (increment < 0 && serviceActivityCount <= 0)
{ {
if (state == BroadcastState.RUNNING)
if (state == BroadcastState.RUNNING
|| state == BroadcastState.PAUSING
|| state == BroadcastState.CANCELING
)
{ {
// TODO: investigate possibility that 0 remainingJobCount may // TODO: investigate possibility that 0 remainingJobCount may
// not be final. It may still change because a finishing job // not be final. It may still change because a finishing job


Loading…
Cancel
Save