karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andre Lanouette (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KARAF-3258) KarService returns immediately after Kar install
Date Fri, 03 Oct 2014 15:48:34 GMT

    [ https://issues.apache.org/jira/browse/KARAF-3258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14158109#comment-14158109
] 

Andre Lanouette commented on KARAF-3258:
----------------------------------------

I think you're probably onto something. Just to make sure you can reproduce the problem, I'll
add more details on what we are doing to get this issue since 3.0.2.

We have our own "software core" kar archive that gets registered as a feature repository in
etc/org.apache.karaf.features.cfg. Then the main feature of this kar, called "core", is added
to the featuresBoot variable of the same configuration file. This causes our main software
feature to get installed at the end of the karaf launch cycle.

Our core plugin then inspect our own configuration file for a list of kar archives to load.
These archives are passed one after the other in the correct load order to KarService.install().
Apparently, the bundles that should start from our kar archives features are not started when
the install method returns. 

We attempted to dig down in Karaf code (this is still new to us, nice and clean code by the
way ;) ) to find why the bundle do not get started right away. Apparently, the FeatureServiceImpl
startBundle method has a condition that determines if the bundle should get started:

{code}
 if (state.installed.contains(bundle)
		            || (bundle.getState() != Bundle.STARTING && bundle.getState() != Bundle.ACTIVE
		                    && bundle.adapt(BundleStartLevel.class).isPersistentlyStarted()))
{
{code}

in our case, our bundles in the Kars getting started by the KarService returns false to 
{code}
bundle.adapt(BundleStartLevel.class).isPersistentlyStarted().
{code}

This causes our bundles not to get started, and the install method to return prematurely.

If we remove our "core" kar archive from the bootFeatures variable of the etc/org.apache.karaf.features.cfg
file, and manually start it after karaf has started, 
{code}
bundle.adapt(BundleStartLevel.class).isPersistentlyStarted().
{code}
 returns true, causing our bundle to get started right away and our code works as expected.


> KarService returns immediately after Kar install
> ------------------------------------------------
>
>                 Key: KARAF-3258
>                 URL: https://issues.apache.org/jira/browse/KARAF-3258
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-core, karaf-kar
>    Affects Versions: 3.0.2
>            Reporter: Andre Lanouette
>            Assignee: Jean-Baptiste Onofré
>            Priority: Blocker
>             Fix For: 4.0.0, 3.0.2
>
>
> In Karaf 3.0.x (up to 3.0.1), when deploying a KAR archive programatically using the
KarService.install(URI) method , the KAR archive would get installed, its features would get
started, and only then the method would return. This can be very useful when we want to control
precisely a particular sequence of kar and service start and registration. 
> With the current version of Karaf-3.0.2-SNAPSHOT, the KarService return right after the
installation of the kar archive. Features do not get started before the method returns. 
> This currently breaks our production build and tests because our plugin load order sequence
cannot be guaranteed anymore.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message