Agreed.
It is the Import- and Export-Package dependencies that are determining the 
start order, besides the framework versus bundle start-level.
When moving the framework start-level (from lvl1 to lvl2), bundles with 
start-level between lvl1 and lvl2 are started (or stopped) in sequence (with no 
defined ordering for bundles with the same start-level).


However, I am talking here about the Karaf semantics of feature:install and 
feature:uninstall.
I just learned that the start-level is in fact 'respected', starting with Karaf 
3.x, when doing a feature installation (KARAF-1878).
Good news :) and it would be great (also to make this behaviour consistent), if 
the internal bundle ordering would be done for the "uninstall" case as well.


Martin




>________________________________
> From: Jamie G. <[email protected]>
>To: [email protected]; Martin Lichtin <[email protected]> 
>Sent: Wednesday, April 17, 2013 7:28 PM
>Subject: Re: bundle start-order in a feature
> 
>
>
>Start level and start order are two different concepts in OSGi.
>
>
>The start level is defined to be a state of execution in which the Framework 
>exists. StartLevel values are defined as unsigned integers with 0 (zero) being 
>the state where the Framework is not launched. Progressively higher integral 
>values represent progressively higher start levels. e.g. 2 is a higher start 
>level than 1. In Apache Karaf we use the scale from 0 to 100.
>
>
>The start order of bundles in not guaranteed in OSGi (not part of the spec). 
>Since bundles can come and go at runtime its best practice to write your 
>applications to be aware of these conditions. Once approach you may take is to 
>have your bundles export and import each other as dependencies - in this way 
>the framework will not start your bundles until it's dependencies are 
>available (for bundles A, B, and C, having B require A, and C require B should 
>result in C not starting until A & B are available).
>
>
>Cheers,
>Jamie
>
>
>
>On Tue, Apr 16, 2013 at 11:53 AM, Martin Lichtin <[email protected]> wrote:
>
>Hi
>>
>>
>>can you clarify how start-order is accounted for when used as part of a 
>>feature?
>>For example
>>
>>
>>    <feature version="1.0.0" name="ftr">
>>       
 <bundle>b1</bundle>
>>        <bundle start-level="60">b2</bundle>
>>        <bundle start-level="55">b3</bundle>
>>    </feature>
>>
>>
>>
>>As far as I can see, the start-level value has no effect. 
>>
>>It is not taken into account during feature:install or feature:uninstall.
>>
>>
>>I see that after Karaf (2.3.1) starting up, the framework start-level is at 
>>100.
>>The default start-level of the feature bundles, eg. b1 in above example, is 
>>80.
>>So then, when running "feature:install ftr", I would expect the start order: 
>>b3,b2,b1
>>For "feature:uninstall ftr", I would expect stop order: b1,b2,b3.
>>
>>
>>Any clarifications appreciated!
>>
>>Martin
>>
>>
>
>
>

Reply via email to