bunqueue v2.8.16
blog · release
bunqueue v2.8.16
Fixes 1 bug. A late ACK from a timed-out worker could phantom-complete a retrying job, silently skipping the retry (src/application/queueManager.ts, src/application/backgroundTasks.ts): for a job with a per-job timeout and attempts > 1…
Bugfixes
Section titled “Bugfixes”- A late ACK from a timed-out worker could phantom-complete a retrying job, silently skipping the retry (
src/application/queueManager.ts,src/application/backgroundTasks.ts): for a job with a per-jobtimeoutandattempts > 1, the timeout sweep requeued it for retry, but the still-hung worker’s late ACK hit the stall-retry recovery path (Issue #33) and completed it anyway, overriding the timeout and skipping the retry.isStallRetried()could not distinguish a timeout-requeue from a stall-retry (both areattempts > 0in queue). The timeout sweep now records the job in a boundedtimedOutJobsset; the ACK recovery paths (ack,ackBatch,ackBatchWithResults) discard a stale ACK for such a job (graceful no-op) so the retry proceeds. A legitimate ACK of the retry attempt carries a valid current lock token and bypasses the stale-token recovery path, so it still completes normally. The marker is cleared when a custom id is recycled, so idempotency-key reuse cannot inherit a stale marker.
Thanks to 1 contributor!
Section titled “Thanks to 1 contributor!”← bunqueue v2.8.15 · Release on GitHub · Commits since v2.8.15 · Full changelog · All posts