Repository navigation
confluentinc#65: Enhanced retry epic #239
Description
Mirror of confluentinc/parallel-consumer#65
Upstream title (verbatim, 2023-07-07):Enhanced retry epic
Opened by astubbs, 2021-01-14 · 5 comments upstream
Closed upstream 2023-07-07 as completed by an administrative sweep, with two of its five
children still open. Not a resolution.
Summarised, not copied. Discussion belongs here - the Confluent-hosted repository is no longer maintained.
Summary
Umbrella issue for retry behaviour. Upstream checklist, with current state of each child verified:
| Child | Upstream state | Fork status |
|---|---|---|
| Basic retry options - customisable failure delay, enable/disable | done | defaultMessageRetryDelay present |
| Retry failure callback (as well as, or instead of, DLQ) - PR #92 | merged 2021-07-23 | present |
| Custom retry delay from a supplier function - #82 | closed completed | retryDelayProvider present |
| Explicit terminal/retriable exceptions - #242 | closed completed | PCRetriableException present |
| Max retries reached: skip, die or DLQ? - #196 | still open upstream | not implemented |
| Dead letter queue - #310 | still open upstream | not implemented |
So the epic was closed as "completed" while its two most substantial children were open, and remain
unimplemented in the fork.
Upstream discussion worth keeping
The thread is where the retry API was shaped with users. radoslawtwardy asked for a custom retry
delay function; the reply pointed at the astubbs:retry-delay-generator-func branch and asked for
API feedback - that became #82 and shipped. Retry count was later exposed through record headers
(#197). Strongly related to
#34 (detecting no progress at all).
Fork status
Open, reduced to its two remaining children. What is left of this epic is exactly:
- A retry limit with a defined action on expiry (skip / fail / DLQ) - upstream docs #167: fix the retry-delay example, and the reference conventions it ran into #196.
- A DLQ implementation - upstream docs(ideation): actor-collection revival - six ranked, evidence-verified directions #310, already mirrored as fork confluentinc#310: Add a dead letter queue (DQL) implementation #149.
Suggest keeping this as the epic tying #34, #48, #196 and #310 together, since the precedence rules
between retry delay sources and expiry actions need to be decided once, not four times.
Prior work
Upstream PR #366 ("Dead letter queue
(DLQ) as option for retry expiration", branch astubbs/features/retry-dlq, head e5bf77c9b) was
closed unmerged in the 2023-06-15 sweep - that is a draft of both remaining children at once.
Commit still reachable.
Mirrored because the upstream issue was closed by an administrative sweep on 2023-07-07, not by a fix or a decision: all 28 issues closed that day carried the single comment "Closing Issue" and were marked completed. A separate sweep three weeks earlier (2023-06-15) closed 35 unmerged PRs with "Closing - Stale.", several of which implemented these issues. Mapping lives in src/docs/development/upstream-map.yaml.
Activity
docs(refactor): record that InternalRuntimeException misnames the pro…
docs(plans) #504: stop on exhaustion as the third reaction beside par…