[
https://issues.apache.org/jira/browse/CAMEL-11225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Luca Burgazzoli resolved CAMEL-11225.
-------------------------------------
Resolution: Fixed
> Deadlock in component creation
> -------------------------------
>
> Key: CAMEL-11225
> URL: https://issues.apache.org/jira/browse/CAMEL-11225
> Project: Camel
> Issue Type: Bug
> Components: camel-core, camel-spring
> Reporter: Luca Burgazzoli
> Assignee: Luca Burgazzoli
> Fix For: 2.18.4, 2.20.0, 2.19.1
>
>
> There are circumstances in which the component creation could enter in a
> deadlock, let's have a look at the following spring example:
> {code:xml}
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd">
>
> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
> <route id="twitter-route">
> <from id="twitter" uri="twitter://timeline/home?type=polling"/>
> <log id="route-log" message="Got ${body}"/>
> </route>
> </camelContext>
>
> </beans>
> {code}
> The critical part is:
> {code:xml}
> <from id="twitter" uri="twitter://timeline/home?type=polling"/>
> {code}
> What happens is that:
> - because there is an id, camel registers a CamelEndpointFactoryBean to the
> spring application contex
> - the endpoint is then resolved which involve the instantiation of the
> component (twitter in this case) which invoke CamelContext.getComponent
> - when the component is being created it then uses the component resolver
> which goes down to the registry to find out if the requested component is
> already there
> - as in the registry there is a bean factory with the same name as the
> component we want to create, spring invokes the factory which then goes down
> to CamelContext.getComponent
> - then deadlock
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)