소스 검색

Fix bug of not posting the correct debit for voice calls.

Fixed by decrementing serviceActivityCount only by postJobStatus method.
Also jobs being scheduled are taken into considering when deciding
to advance broadcast state COMPLETED to ALLDONE.
tags/1.0.23
ymlam 2 년 전
부모
커밋
e4da5bf0c7
1개의 변경된 파일5개의 추가작업 그리고 10개의 파일을 삭제
  1. +5
    -10
      src/main/java/altk/comm/engine/Broadcast.java

+ 5
- 10
src/main/java/altk/comm/engine/Broadcast.java 파일 보기

@@ -386,11 +386,6 @@ public abstract class Broadcast
myLogger.error("Caught unexpected Throwable", t);
terminate(BroadcastState.ABORTED, t + ": " + t.getMessage());
}
finally
{
updateServiceActivityCount(-batch.size());
if (serviceActivityCount == 0) postback.wakeOneUp();
}
if (sleepBetweenJobs > 0)
{
try
@@ -1287,8 +1282,8 @@ public abstract class Broadcast
report.initBase(job, broadcastId, launchRecordId, activityRecordIdParamName, jobReportRootNodeName);
report.init(job);
postback.queueReport(report.toString());
updateServiceActivityCount(-1);
}
}
/**
@@ -1352,6 +1347,8 @@ public abstract class Broadcast

public ScheduledFuture<?> rescheduleJob(final Job job, long rescheduleTimeMS)
{
if (rescheduleTimeMS < 0) return null;
// No more rescheduling on cancel, abort, expired, or alldone
if (state == BroadcastState.CANCELING
|| state == BroadcastState.CANCELED
@@ -1424,10 +1421,8 @@ public abstract class Broadcast
public PostbackThreadActionOnEmpty getPostbackThreadActionOnEmpty() {
myLogger.debug("getPostbackThreadActionOnEmpty(): broadcast state " + state);
if (state.isFinal) return PostbackThreadActionOnEmpty.STOP;
int activeJobCount = getActiveJobCount();
myLogger.debug("getPostbackThreadActionOnEmpty(): activeJobCount = " + activeJobCount);
if (activeJobCount > 0) {
if (serviceActivityCount > 0) {
return PostbackThreadActionOnEmpty.WAIT;
}
@@ -1443,7 +1438,7 @@ public abstract class Broadcast
return setState(BroadcastState.ABORTED, reason, stateErrorText).stateChangeStatus == StateChangeStatus.SUCCESS?
PostbackThreadActionOnEmpty.CONTINUE : PostbackThreadActionOnEmpty.STOP;
}
else if (state == BroadcastState.COMPLETED) {
else if (state == BroadcastState.COMPLETED && scheduledJobs == 0) {
return setState(BroadcastState.ALLDONE).stateChangeStatus == StateChangeStatus.SUCCESS?
PostbackThreadActionOnEmpty.CONTINUE : PostbackThreadActionOnEmpty.STOP;
}


불러오는 중...
취소
저장