Repository navigation
fix: cap retry scheduler concurrency and jitter its backoff - #1153
Merged
Merged
Conversation
This was referenced Oct 18, 2026
alexluong
force-pushed
the
fix/scheduler-receipt-delete
branch
from
October 19, 2026 19:52
8b09f7d to
cd7fce8
Compare
alexluong
force-pushed
the
fix/retry-scheduler-load
branch
2 times, most recently
from
October 19, 2026 20:10
0391e80 to
f0fb24f
Compare
alexluong
changed the base branch from
fix/scheduler-receipt-delete
to
fix/retry-lookup-time-bound
October 19, 2026 20:10
alexluong
force-pushed
the
fix/retry-scheduler-load
branch
from
October 19, 2026 20:19
f0fb24f to
ae70404
Compare
alexbouchardd
left a comment
Contributor
There was a problem hiding this comment.
Should we try to process in batch instead? Not so much a comment on this work specifically but wondering if the one-by-one is really the right approach
Contributor
|
Ahh! #1155 |
alexbouchardd
approved these changes
Oct 21, 2026
alexluong
force-pushed
the
fix/retry-lookup-time-bound
branch
from
October 21, 2026 15:32
8e822af to
7470a22
Compare
alexluong
force-pushed
the
fix/retry-scheduler-load
branch
from
October 21, 2026 15:32
ae70404 to
119d936
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Caps how many retries the retry scheduler runs at once and jitters its error backoff, so retries that come due together don't swamp the log store.
Monitorstarts a goroutine per received task, with no limit. When thousands of retries come due within seconds, their lookups queue on the ClickHouse pool (10 connections, 10 s wait), most time out, back off exactly 30 s and come back together. The burst repeats at 30, 60, 120 and 240 s until the tasks are dead-lettered.RETRY_MAX_CONCURRENCY(default100per process,0= unbounded). The monitor takes a slot before it receives, so tasks over the limit wait in the queue without using up receives.RETRY_MAX_RECEIVE_COUNT(default5), for log store outages longer than the backoff window (~7.5 min at the 30 s default).CLICKHOUSE_MAX_OPEN_CONNS(default: the client's 10),CLICKHOUSE_DIAL_TIMEOUT_SECONDS(default10) andCLICKHOUSE_READ_TIMEOUT_SECONDS(default30). clickhouse-go uses the dial timeout as the pool wait too.Notes
🤖 Generated with Claude Code