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

Claus Ibsen resolved CAMEL-25858.
---------------------------------
    Resolution: Fixed

> camel-main - dev mode: a reload that changes options of a component sets only 
> the last one, and drops the options that did not change
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25858
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25858
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-main
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.24.0
>
>
> In dev mode ({{camel run --dev}}, or {{camel.main.routesReloadEnabled}}), a 
> properties file that changed configures its components again 
> ({{MainPropertiesReload}}, since CAMEL-19071). Each component of the reload 
> is created anew. Two things go wrong:
> * *Several options of one component in one save: only the last one is set.* 
> {{BaseMainSupport.doAutoConfigurationFromProperties}} removes and creates the 
> component for each key ({{MainHelper.computeProperties}} calls the supplier 
> once per key, and with {{reload}} the supplier calls 
> {{camelContext.removeComponent(name)}}). Each option is set on another 
> instance, and only the last instance stays in the CamelContext.
> * *An option that did not change is lost.* The reload passes only the 
> properties that changed (the file watcher keeps only those). The component is 
> created anew, with its defaults, and gets only those options, so the options 
> from the start of the application are gone.
> Both are reproduced with {{MainPropertiesReload.onChanged}} and the log 
> component: two options in one reload set only the second; a reload that 
> changes {{lazy-start-producer}} drops {{source-location-logger-name}} from 
> the start.
> Found in a benchmark of Oct 19-20 2026: a model added 
> {{camel.component.langchain4j-chat.*}} options in one save, and the route 
> failed with "chatModel must be specified", although the reload logged all 
> three options. It stayed hidden before CAMEL-25767: with {{camel run 
> --source-dir=.}}, a reload did not apply component options at all.
> Data formats and languages are not affected: a reload configures the existing 
> instance.
> Proposal: create each component of a reload once, and configure it with all 
> its current options (from the properties component, ENV variables and JVM 
> system properties, as at startup), the options of the reload winning.
> _Claude Code on behalf of davsclaus_



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

Reply via email to