diff --git a/src/infra/outbound/delivery-queue.ts b/src/infra/outbound/delivery-queue.ts index e0d7abcb9ee..19765e2545b 100644 --- a/src/infra/outbound/delivery-queue.ts +++ b/src/infra/outbound/delivery-queue.ts @@ -344,8 +344,19 @@ export async function recoverPendingDeliveries(opts: { for (const entry of pending) { const now = Date.now(); if (now >= deadline) { - const deferred = pending.length - recovered - failed - skippedMaxRetries - deferredBackoff; - opts.log.warn(`Recovery time budget exceeded — ${deferred} entries deferred to next restart`); + // Increment retryCount on remaining entries so they eventually hit MAX_RETRIES + const remaining = pending.slice(pending.indexOf(entry)); + for (const r of remaining) { + try { + await failDelivery(r.id, "Recovery time budget exceeded — deferred", opts.stateDir); + } catch { + /* best-effort */ + } + } + const deferred = remaining.length; + opts.log.warn( + `Recovery time budget exceeded — ${deferred} entries deferred (retryCount incremented)`, + ); break; } if (entry.retryCount >= MAX_RETRIES) {