in kernel/src/main/java/org/apache/shardingsphere/elasticjob/kernel/listener/AbstractDistributeOnceElasticJobListener.java [82:107]
public final void afterJobExecuted(final ShardingContexts shardingContexts) {
Set<Integer> shardingItems = shardingContexts.getShardingItemParameters().keySet();
if (shardingItems.isEmpty()) {
return;
}
guaranteeService.registerComplete(shardingItems);
while (!guaranteeService.isRegisterCompleteSuccess(shardingItems)) {
BlockUtils.waitingShortTime();
}
if (guaranteeService.isAllCompleted()) {
guaranteeService.executeInLeaderForLastCompleted(this, shardingContexts);
return;
}
long before = timeService.getCurrentMillis();
try {
synchronized (completedWait) {
completedWait.wait(completedTimeoutMilliseconds);
}
} catch (final InterruptedException ex) {
Thread.interrupted();
}
if (timeService.getCurrentMillis() - before >= completedTimeoutMilliseconds) {
guaranteeService.clearAllCompletedInfo();
handleTimeout(completedTimeoutMilliseconds);
}
}