ソースを参照

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年前
コミット
7b4d88b9f8
1個のファイルの変更6行の追加1行の削除
  1. +6
    -1
      src/main/java/altk/comm/engine/Broadcast.java

+ 6
- 1
src/main/java/altk/comm/engine/Broadcast.java ファイルの表示

@@ -220,6 +220,7 @@ public abstract class Broadcast
toStates.put(BroadcastState.CANCELING, Arrays.asList(
BroadcastState.ABORTING,
BroadcastState.ABORTED,
BroadcastState.COMPLETED,
BroadcastState.CANCELED, // User action
BroadcastState.PURGED // User action
));
@@ -233,6 +234,7 @@ public abstract class Broadcast
// Transitions from PAUSING
toStates.put(BroadcastState.PAUSING, Arrays.asList(
BroadcastState.RUNNING, // User action
BroadcastState.COMPLETED,
BroadcastState.ABORTING,
BroadcastState.CANCELED, // User action
BroadcastState.PAUSED,
@@ -1182,7 +1184,10 @@ public abstract class Broadcast
serviceActivityCount += increment;
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
// not be final. It may still change because a finishing job


読み込み中…
キャンセル
保存