From e4da5bf0c7b8177d3e19cc8298d847308833cc24 Mon Sep 17 00:00:00 2001 From: ymlam Date: Fri, 27 Jan 2023 01:25:35 -0500 Subject: [PATCH] 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. --- src/main/java/altk/comm/engine/Broadcast.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/altk/comm/engine/Broadcast.java b/src/main/java/altk/comm/engine/Broadcast.java index 6453593..8085cdf 100644 --- a/src/main/java/altk/comm/engine/Broadcast.java +++ b/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; }