Skip to content

Commit 57ba678

Browse files
committed
ensure remove is not execute before add of running triggers
1 parent 27d24ab commit 57ba678

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

core/src/main/java/org/sterl/spring/persistent_tasks/scheduler/component/TaskExecutorComponent.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ public Future<TriggerKey> submit(@Nullable TriggerEntity trigger) {
7575
}
7676

7777
try {
78-
runningTasks.put(trigger, executor.submit(() -> runTrigger(trigger)));
78+
synchronized (runningTasks) {
79+
runningTasks.put(trigger, executor.submit(() -> runTrigger(trigger)));
80+
}
7981
return runningTasks.get(trigger);
8082
} catch (Exception e) {
8183
runningTasks.remove(trigger);
@@ -89,8 +91,11 @@ private TriggerKey runTrigger(TriggerEntity trigger) {
8991
triggerService.run(trigger);
9092
return trigger.getKey();
9193
} finally {
92-
if (runningTasks.remove(trigger) == null) {
93-
log.error("Failed to remove trigger with {}", trigger.key());
94+
synchronized (runningTasks) {
95+
if (runningTasks.remove(trigger) == null && runningTasks.size() > 0) {
96+
var runningKeys = runningTasks.keySet().stream().map(TriggerEntity::key);
97+
log.error("Failed to remove trigger with {} - {}", trigger.key(), runningKeys);
98+
}
9499
}
95100
}
96101
}

0 commit comments

Comments
 (0)