Skip to content

Return orphaned catchup ranges to the front of the queue - #420

Draft
sisuresh wants to merge 1 commit into
stellar:mainfrom
sisuresh:sidd/parallel-catchup-lease-reaper
Draft

Return orphaned catchup ranges to the front of the queue#420
sisuresh wants to merge 1 commit into
stellar:mainfrom
sisuresh:sidd/parallel-catchup-lease-reaper

Conversation

@sisuresh

@sisuresh sisuresh commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

A worker now records the range it claims against its own pod name, and on startup hands back whatever its previous incarnation was holding — straight to the front of the job queue. Previously a range whose worker died stayed in in_progress until every other range had finished and the monitor saw the whole fleet idle, so one orphan serialized the tail.

Ranges orphaned more than recovery.max_attempts times are failed instead of retried, since recovering promptly makes #334 easier to hit.

Fixes #409.

A worker that dies mid-catchup (OOMKill, eviction, node loss) leaves its
range in the in_progress queue with nobody working on it. Recovery only
fired when every worker in the fleet was unreachable, so a single orphan
waited for all other ranges to finish before being retried.

A worker now records the range it claims against its own pod name, and on
startup hands back whatever its previous incarnation was holding. A range
orphaned too many times is failed rather than retried forever.

Fixes stellar#409.
@sisuresh
sisuresh force-pushed the sidd/parallel-catchup-lease-reaper branch from 1ab7e37 to 5b21b2f Compare August 1, 2026 00:25
@sisuresh sisuresh changed the title Recover orphaned catchup ranges via a lease reaper Return orphaned catchup ranges to the front of the queue Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failed catchup ranges are retried only after all other ranges finish, adding hours to runtime

1 participant