[
https://issues.apache.org/jira/browse/CAMEL-26857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-26857 started by shashank.
----------------------------------------
> camel-core - after a doCatch caught the failure of a called route that was
> redelivered, a later error handler counts its redeliveries on from that route
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26857
> URL: https://issues.apache.org/jira/browse/CAMEL-26857
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Reporter: shashank
> Assignee: shashank
> Priority: Minor
>
> When the {{doTry}} block calls a route (such as with {{direct}}) whose error
> handler redelivers ({{maximumRedeliveries}} > 0, for example a
> CamelContext-scoped error handler) and then fails unhandled, the
> {{CamelRedeliveryCounter}} header of those redeliveries stays on the message
> when the {{doCatch}} takes over the failure. It is not marked as over, as
> CAMEL-26734 does for a step that was redelivered and then succeeded. So a
> later error handler (a failure after the {{doTry}} in the calling route, a
> route called from the {{doCatch}} or {{doFinally}} block, or a route called
> later) counts its redeliveries on from that header
> ({{incrementRedeliveryCounter}} respects a higher header, for nested error
> handlers) and redelivers fewer times than configured, or not at all.
> Example: the called route redelivers 2 times and fails; the calling route has
> {{maximumRedeliveries(3)}} and a step after the {{doTry}} that fails. That
> step gets 1 redelivery instead of 3. When the {{doTry}} fails in the route
> itself, no redelivery runs inside the {{doTry}}, and the step gets its 3
> redeliveries.
> This is not a regression: before CAMEL-26447 the exchange stayed failure
> handled after the {{doCatch}}, so the later error handlers did not run at
> all; and for the route called from the {{doCatch}} block the same holds on
> main since CAMEL-26434. It is the next difference from the {{doTry}} that
> fails in the route.
> Possible fix: mark the redelivery as over when the {{doCatch}} takes over the
> exception, as {{markRedeliveryOver}} does for a recovered step (CAMEL-26734);
> the redelivery headers stay readable in the {{doCatch}} block. This needs a
> small helper in {{RedeliveryErrorHandler}} (the
> {{CamelErrorHandlerRedeliveryOver}} property is private there) that
> {{CatchProcessor}} can call. Test: the example above, with the in-route
> {{doTry}} as the control.
> Found while working on CAMEL-26447 (apache/camel#29584), named in its review.
> _Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)