[
https://issues.apache.org/jira/browse/CAMEL-24700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-24700:
-----------------------------------
Fix Version/s: 4.23.0
Assignee: Claus Ibsen
> camel-yaml-dsl - circuitBreaker with onFallback before steps puts the steps
> into the fallback (Definition has no children)
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24700
> URL: https://issues.apache.org/jira/browse/CAMEL-24700
> Project: Camel
> Issue Type: Bug
> Components: camel-yaml-dsl
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> In the YAML DSL a circuitBreaker whose onFallback key is written before its
> steps key fails to start:
> {code}
> - circuitBreaker:
> onFallback:
> steps:
> - log: "fallback"
> steps:
> - log: "inside"
> {code}
> {noformat}
> Failed to create route: cb at: >>> CircuitBreaker[[]] <<< ... because:
> Definition has no children on CircuitBreaker[[]]
> {noformat}
> With steps before onFallback the same route runs. Key order in a YAML mapping
> should not matter, and camel validate yaml accepts both forms (the JSON
> schema cannot express order).
> Cause: CircuitBreakerDefinition.addOutput redirects every output into the
> fallback once onFallback is set (the Java fluent DSL contract, so that
> .onFallback().to(...) works). The generated
> CircuitBreakerDefinitionDeserializer handles the keys in document order:
> "onFallback" calls target.setOnFallback(val), and a later "steps" calls
> setSteps(target, node), which adds each step with addOutput, so the steps end
> up inside the fallback and the circuit breaker itself has no outputs.
> doTry (doCatch/doFinally before steps) and choice are not affected:
> TryDefinition.addOutput does not redirect, and choice has no steps key.
> Suggested fix: in the deserializer, add the steps with the plain outputs list
> (for example target.getOutputs().add(...) or a setSteps that bypasses the
> fluent redirect), or defer setOnFallback until after the steps are applied. A
> test in camel-yaml-dsl with onFallback first should pass.
> Reproducer: 4.23.0-SNAPSHOT, camel run with the YAML above. Found on
> 2026-09-12 by a local model in the AI authoring benchmark: the model wrote
> onFallback first (a natural order, the fallback being the "important" part),
> the validator accepted the file and the run failed with a message that does
> not mention the order.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)