[
https://issues.apache.org/jira/browse/CAMEL-23252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Federico Mariani resolved CAMEL-23252.
--------------------------------------
Resolution: Fixed
> Add onReload SPI method to ContextServicePlugin for dev-mode hot-reload hooks
> -----------------------------------------------------------------------------
>
> Key: CAMEL-23252
> URL: https://issues.apache.org/jira/browse/CAMEL-23252
> Project: Camel
> Issue Type: New Feature
> Affects Versions: 4.18.0
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Minor
> Fix For: 4.18.2, 4.19.0
>
>
> Third-party plugins that register beans during
> {{ContextServicePlugin.load()}} have no way to refresh those beans when
> properties change in dev mode ({{--dev}}).
> Camel's {{RouteWatcherReloadStrategy}} detects {{.properties}} file changes
> and reloads routes, but third-party beans bound to the registry during
> {{load()}} become stale. Components like {{SqlComponent}} cache bean
> references (e.g., DataSource) at the component level, so even endpoint
> registry clearing doesn't help — the plugin needs a hook to refresh beans
> before routes are reloaded.
> *Proposed change*:
> Add a default {{onReload}} method to the {{ContextServicePlugin}} SPI:
> {code:java}
> public interface ContextServicePlugin {
> void load(CamelContext camelContext);
> default void unload(CamelContext camelContext) {}
> /**
> * Called before routes are reloaded during dev mode (hot-reload). *
> Plugins can refresh beans/configuration so restarted routes
> * pick up updated references.
> */
> default void onReload(CamelContext camelContext) {}
> }
> {code}
> {{RouteWatcherReloadStrategy}} would invoke {{onReload()}} on all registered
> plugins before removing and re-adding routes in {{onRouteReload()}}.
> Benefits:
> - Deterministic ordering — same thread, no race conditions
> - Backward compatible — default no-op
> - Eliminates the need for third-party plugins to run their own file watchers
--
This message was sent by Atlassian Jira
(v8.20.10#820010)