What you say makes a lot of sense. I was just refering to behavior which
I think is there since new resolver come into play.
Making it a bit more deterministic is definitely fair (yet expensive in
debugging) point to take.

Cheers,
Łukasz


On 15.10.2020 17:32, Romain Manni-Bucau wrote:
> Fact is if features are not installed in reversed graph order it is not
> really reliable an you can't install an app and be sure it will work, even
> if you sorted manually the bundles.
> The ResourceComparator sorts by symbolic names which makes the deployment
> deterministic but potentially random from an user perspective
> (uncontrollable).
> Then the featureservice+resolve use a list of hashmap (or hashset) which
> also randomizes the installation.
> Guess using at least a reversed dijkstra distance (or tree deepness in some
> simple cases) from the feature to sort bundles installation order is worth
> it to make it more natural and controlled for end users.
> 
> Hope it makes sense.
> 
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://rmannibucau.metawerx.net/> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> <https://www.packtpub.com/application-development/java-ee-8-high-performance>
> 
> 
> Le jeu. 15 oct. 2020 à 17:28, Łukasz Dywicki <l...@code-house.org> a écrit :
> 
>> I am not sure if that's feature resolver issue. It is rather related to
>> bundle resolver which determines installation order.
>> As far I remember from my last debugging session in this area bundles
>> are installed in computed "dependency" order. It might be that leaf/1
>> has no direct dependencies on any of its children hence it is installed
>> first.
>> Note, that I don't know details on how present feature resolution works
>> and if its just supplier for graph elements or separate graph computed
>> by same algorithm as bundles.
>>
>> Best,
>> Łukasz
>>
>>
>> On 15.10.2020 15:47, Jean-Baptiste Onofre wrote:
>>> Hi guys,
>>>
>>> Romain found an issue on the feature resolver about the features
>> ordering.
>>>
>>> For instance, if we have the following features descriptor:
>>>
>>> <features name="global">
>>>     <feature name="nested1">
>>>         <bundle>mvn:foo/nested1/2</bundle>
>>>     </feature>
>>>     <feature name="nested21">
>>>         <bundle>mvn:foo/nested21/3</bundle>
>>>     </feature>
>>>     <feature name="nested2">
>>>         <feature>nested21</feature>
>>>         <bundle>mvn:foo/nested2/2</bundle>
>>>     </feature>
>>>     <feature name="leaf">
>>>         <feature>nested1</feature>
>>>         <feature>nested2</feature>
>>>         <bundle>mvn:foo/leaf/1</bundle>
>>>     </feature>
>>> </features>
>>>
>>> When installing leaf feature, we expect the following order (for bundles
>> installation):
>>>  1. foo/nested1/2 bundle (nested1 feature)
>>>  2. foo/nested21/3 bundle (nested21 feature)
>>>  3. foo/nested2/2 bundle (nested2 feature)
>>>  4. foo/leaf/1 bundle (leaf feature)
>>>
>>> However, the order is not this one. During test, we saw that the order
>> is mvn:foo/leaf/1, mvn:foo/nested1/2, mvn:foo/nested21/3, mvn:foo/nested2/2.
>>>
>>> We can see that the leaf bundle is installed before the bundles from
>> inner/transitive features.
>>>
>>> I would like to investigate this behavior and improve this (I would like
>> to check if it’s also the case in previous versions).
>>>
>>> As the target of Karaf 4.3.0 is this week end, I would take some time to
>> check and compare.
>>>
>>> I will keep you posted.
>>>
>>> Regards
>>> JB
>>>
>>
> 

Reply via email to