Skip to content

fix(errs): Retry transient grouped failures - #621

Open
prathshenoy wants to merge 2 commits into
mainfrom
prath.shenoy/classify-joined-errors
Open

fix(errs): Retry transient grouped failures#621
prathshenoy wants to merge 2 commits into
mainfrom
prath.shenoy/classify-joined-errors

Conversation

@prathshenoy

@prathshenoy prathshenoy commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

What:

  • Retry work when any one of several failures reported together is transient instead of giving up on the first attempt.
  • Limit a classification attached to one grouped failure to that failure alone, instead of letting it decide the outcome for the others reported alongside it.

Why:

  • Stop discarding failures that would have cleared on their own by keeping a step that fans work out to several handlers from being abandoned because one handler hit a momentary error.

Test Plan

  • Add unit tests.

Revert Plan

  • Revert this PR. The changes in this PR are confined to the error classification framework.

Issues

@prathshenoy
prathshenoy marked this pull request as ready for review August 19, 2026 19:23
@prathshenoy
prathshenoy enabled auto-merge August 19, 2026 19:23
// no classifier is invoked. Pass 2 runs the configured classifiers per node.
// Walking the chain is cheap relative to a classifier call, so this avoids
// running classifiers whenever the chain is already classified deeper down.
// Implementation: two passes over the chain. Pass 1 looks for an existing

@mnoah1 mnoah1 Aug 19, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if instead, we just create errs.Group(errors...) and let controllers return that to group errors:

  • Iternal groupedError type with members[]
  • when it's a grouped error, each member gets passed through Process, which gets its classification
  • the whole thing gets wrapped as retryable if any of them are retryable

Would be a bit more explicit than trying to unwrap from the results returned by errors.Join

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants