[
https://issues.apache.org/jira/browse/CAMEL-24182?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-24182.
---------------------------------
Resolution: Fixed
> camel-cxf - SpringBusFactoryBean never shuts down the bus it creates
> (Bus/BusApplicationContext leak)
> -----------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24182
> URL: https://issues.apache.org/jira/browse/CAMEL-24182
> Project: Camel
> Issue Type: Bug
> Components: camel-cxf
> Reporter: Federico Mariani
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.22.0
>
>
> *Severity:* High
> h3. Problem
> {{SpringBusFactoryBean}} is a singleton, eager-init {{SmartFactoryBean<Bus>}}
> whose {{getObject()}} runs {{new SpringBusFactory().createBus(cfgFiles,
> includeDefaultBus)}}, creating a full {{BusApplicationContext}} (its own
> Spring context) plus bus thread pools/extensions. The class implements no
> {{DisposableBean}} and declares no destroy method, and Spring never destroys
> FactoryBean *products*. CXF only closes the {{BusApplicationContext}} when
> {{bus.shutdown()}} is called - which nothing ever does.
> h3. Impact
> An application that declares {{<bean class="...SpringBusFactoryBean">}} and
> wires the bus into endpoints leaks the bus, its {{BusApplicationContext}},
> workqueue threads and classloader references on every context close/refresh
> (servlet redeploy, Spring Boot devtools restart, repeated integration tests)
> -> thread/memory leak, eventually metaspace/OOM on repeated redeploys.
> h3. Location
> {{components/camel-cxf/camel-cxf-spring-common/src/main/java/org/apache/camel/component/cxf/spring/SpringBusFactoryBean.java}}
> ~32-75.
> h3. Fix
> Implement {{DisposableBean}} and retain the created bus:
> {code:java}
> public void destroy() { if (bus != null) { bus.shutdown(true); } }
> {code}
> Also add a null-guard in {{setCfgFiles}} (currently NPEs on null) and remove
> the write-only {{bf}} field.
> ----
> _Filed by Claude Code (Claude Fable) on behalf of Federico Mariani (GitHub:
> Croway). Findings from an AI-assisted code review of the camel-cxf component
> family; each item was verified against the current source and git history.
> Items marked *[reproducer attached]* include a failing JUnit test that
> demonstrates the defect._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)