[
https://issues.apache.org/jira/browse/CAMEL-26750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18141039#comment-18141039
]
Claus Ibsen commented on CAMEL-26750:
-------------------------------------
Merged to main in https://github.com/apache/camel/pull/29430 (be43a877ce65),
fixed in 4.24.0.
_Claude Code on behalf of davsclaus_
> camel-core-model - circuitBreaker: the steps of an onFallback loaded from
> YAML or XML have the wrong route id in the message history and the error
> registry
> -----------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26750
> URL: https://issues.apache.org/jira/browse/CAMEL-26750
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> A circuit breaker whose onFallback is loaded from YAML or XML gives the steps
> nested in the fallback the wrong route id. In the message history, and so in
> the error registry ({{camel get errors}}, the dev console, the TUI), the
> route of such a step is the id of the first step of the fallback instead of
> the route.
> For example, with the fail-well/circuit-breaker example (an onFallback with a
> choice), the errors recorded while the breaker is open say {{routeId:
> choice1}}, and the message history says {{choice1[setBody1]}} instead of
> {{stock-check[setBody1]}}.
> *Cause*
> A loader builds the onFallback with its steps before it sets it on the
> circuit breaker with {{CircuitBreakerDefinition.setOnFallback}}. Only the
> fluent {{onFallback()}} gives the fallback and its steps a parent;
> {{setOnFallback}} did not, and {{RouteDefinitionHelper.initParent}} does not
> reach them either, as the fallback is not among the outputs of the circuit
> breaker. The message history takes the route of a step by walking up its
> parents ({{CamelContextHelper.getRouteId}}), so for a step inside the choice
> it stops at the choice. The copy constructor has the same gap: a copied
> fallback keeps the parent of the original circuit breaker (route templates,
> kamelets).
> This is not a regression of CAMEL-24700; {{setOnFallback}} never set the
> parents.
> *Fix*
> {{setOnFallback}} and the copy constructor give the fallback and its steps
> the circuit breaker as their parent, as {{onFallback()}} does. The model is
> shared, so camel-resilience4j and camel-microprofile-fault-tolerance both get
> it.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)