[ 
https://issues.apache.org/jira/browse/CAMEL-25387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-25387:
--------------------------------
    Fix Version/s: 4.23.0
                       (was: 4.24.0)

> camel-kamelet - A Kamelet whose template starts from the Kamelet itself fails 
> with a StackOverflowError instead of saying so
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25387
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25387
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-kamelet
>            Reporter: Claus Ibsen
>            Priority: Minor
>             Fix For: 4.23.0
>
>
> A Kamelet template that starts from the Kamelet itself, instead of 
> {{kamelet:source}}, creates the Kamelet again while creating it, until the 
> stack overflows.
> {noformat}
> # loop-action.kamelet.yaml
> spec:
>   template:
>     from:
>       uri: kamelet:loop-action/route
>       steps:
>         - setBody:
>             expression:
>               simple:
>                 expression: "${body}!"
> # a route
> - to:
>     uri: kamelet:loop-action
> {noformat}
> {{camel run}} on 4.23.0-SNAPSHOT: the JVM dies at startup with {{Exception in 
> thread "main" java.lang.StackOverflowError}}, with no mention of the Kamelet. 
> The stack repeats {{KameletComponent$LifecycleHandler.track}}, 
> {{AbstractCamelContext.doGetEndpoint}} and {{addService}}. When the same file 
> is written while an integration runs in dev mode, the reload logs {{Error 
> reloading files in directory ... due to: null. This exception is ignored.}}, 
> then a StackOverflowError in {{RouteDefinitionHelper.validateUniqueIds}}.
> Found in a local model benchmark: the model wrote {{from: 
> kamelet:tag-order-action/route}} in the template of {{tag-order-action}}, and 
> the only feedback it got was the reload warning with {{null}}. The 
> camel-jbang AI validator now reports this template shape (CAMEL-25379), but 
> the runtime should say it too.
> Proposal: when the kamelet component creates a template and the template's 
> {{from}} is a {{kamelet:}} endpoint of the same Kamelet (or a cycle of 
> Kamelets), fail with a clear message instead of recursing. For example: 
> "Kamelet loop-action starts from kamelet:loop-action, itself: the template of 
> an action or a sink starts from kamelet:source". Separately, the reload 
> warning should not print {{null}} as the cause for an Error such as 
> StackOverflowError.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to