Worker startup scan

// On boot, ask task store for interrupted tasks
List stale = taskStore.findStale(Duration.ofMinutes(5));
for (Task t : stale) {
  runtime.resume(t);
}
Advertisement

What counts as stale

Task in RUNNING state with a heartbeat older than N minutes. Live workers heartbeat every 30s.

Advertisement

Avoiding double-execution

Grabbing a stale task requires SKIP LOCKED + status transition to RESUMING. Only one worker wins.