camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Schneider (JIRA)" <>
Subject [jira] [Commented] (CAMEL-9048) camel-core causes restart of karaf console if it is refreshed
Date Thu, 06 Aug 2015 08:15:04 GMT


Christian Schneider commented on CAMEL-9048:

The Map<String, BundleCapability> packageCapabilities only contains the capabilties
representing the packages that camel core exports. The map is only changed in cachePackageCapabilities
and this is called only when camel core starts. 

When a bundle we track starts we just look up the capability for the package of the interface
we check. So we do not store any data about the individual bundles. 

The clear on packageCapabilities is not even strictly necessary as we would just put the same
capabilities on the next start but it is better to cleanup on stop.

> camel-core causes restart of karaf console if it is refreshed
> -------------------------------------------------------------
>                 Key: CAMEL-9048
>                 URL:
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-osgi
>    Affects Versions: 2.15.2
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.16.0, 2.15.3
> Start karaf 4.0.0
> feature:repo-add mvn:org.apache.cxf.karaf/apache-cxf/3.1.1/xml/features
> feature:repo-add mvn:org.apache.camel.karaf/apache-camel/2.15.2/xml/features
> feature:install camel-core
> feature:install -v wss4j
> The last feature install causes the karaf shell to restart. The refreshed bundles list
shows this:
>     jline/2.12.1 (Wired to org.apache.camel.camel-core/2.15.2 which is being refreshed)
>     org.apache.camel.camel-core/2.15.2 (Should be wired to: org.apache.servicemix.bundles.xalan/
(through [org.apache.camel.camel-core/2.15.2] osgi.wiring.package; filter:="(osgi.wiring.package=org.apache.xalan.xsltc.trax)";
> So this shows that the immediate reason is that jline was refreshed. As jline is used
by the shell it also restarts.
> Now it might seem strange that jline depends on camel-core. I had a similar issue in
activemq-core Activator. It probed the classloaders of all bundles for well known interfaces
to find extensions. I think camel-core does the same. The problem here is that jline has a
dynamic import package: *. So the bundle classloader of jline is able to find any camel interface
and will then have a wire to camel-core. So if then there is a refresh of camel-core it also
will be refreshed.
> This issue can hit all bundles that have a dynamic import package *. 
> the solution is to not actually load interface classes but rather check the bundle wiring
if there is a wiring to an interface package. This will then not change the wirings and so
not cause these problems.
> I will try to provide a fix for the problem.

This message was sent by Atlassian JIRA

View raw message