Skip to content

Commit 28bf1d6

Browse files
committed
docs: clarify retry is not preserved for retry-disabling controls
The error-handling docs claimed native retry is still performed for any non-default ErrorStatusUpdateControl, which is inaccurate for controls that disable retry (withNoRetry() / rescheduleAfter()). Qualify the paragraph so it only claims retry/backoff is preserved when a retry is configured and not disabled by the returned control.
1 parent 0ad220d commit 28bf1d6

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

docs/content/en/docs/documentation/error-handling-retries.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,19 @@ Retry can be skipped in cases of unrecoverable errors:
110110

111111
When `updateErrorStatus` returns any `ErrorStatusUpdateControl` other than
112112
`ErrorStatusUpdateControl.defaultErrorProcessing()`, the framework considers the error handled by
113-
the reconciler. In that case the native retry (including the exponential backoff from
114-
`@GradualRetry`) is still performed, and while retry attempts remain the framework no longer logs
115-
the "Uncaught error during event processing" warning; the error is logged on `DEBUG` level instead.
116-
This lets a reconciler keep retrying an expected, recoverable condition without producing a
117-
continuous stream of `WARN` messages, while it remains free to log the error at whatever level it
118-
deems appropriate inside `updateErrorStatus`. On the last retry attempt (or when no retry is
119-
configured), the failure is final, so the framework keeps its higher-severity logging to avoid
120-
hiding a non-recoverable error. Returning `ErrorStatusUpdateControl.defaultErrorProcessing()`
121-
preserves the default behavior, including the warning.
113+
the reconciler and, while retry attempts remain, no longer logs the "Uncaught error during event
114+
processing" warning; the error is logged on `DEBUG` level instead. This lets a reconciler keep
115+
retrying an expected, recoverable condition without producing a continuous stream of `WARN`
116+
messages, while it remains free to log the error at whatever level it deems appropriate inside
117+
`updateErrorStatus`.
118+
119+
This log downgrade applies only when retry is actually taking place, i.e. a retry is configured and
120+
the returned control does not disable it. Controls that explicitly disable retry — `withNoRetry()`
121+
and `rescheduleAfter()` — cancel the native retry and its `@GradualRetry` backoff, so nothing is
122+
retried in those cases. Likewise, on the last retry attempt (or when no retry is configured) the
123+
failure is final, so the framework keeps its higher-severity logging to avoid hiding a
124+
non-recoverable error. Returning `ErrorStatusUpdateControl.defaultErrorProcessing()` preserves the
125+
default behavior, including the warning.
122126

123127
### Correctness and Automatic Retries
124128

0 commit comments

Comments
 (0)