Thought that as well but camel, cxf, jaxrs whiteboard etc are other
examples where order is important....but the symbolic names should be
sufficient to guarantee a good order in most cases too

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 ven. 16 oct. 2020 à 10:24, Jean-Baptiste Onofre <j...@nanthrax.net> a
écrit :

> Yeah, agree that it’s weird to not have seen before ;)
>
> My guess is that people maybe have more "splitter/dynamic" features than
> "our" scenario (even if it’s a valid one) and also have super fast machine.
> Here, the application "imposes" a startup order which is not the case in
> pure OSGi (by design, it’s dynamic, so it can react later).
>
> So, I’m pretty sure, it’s not really a problem with "dynamic ready"
> modules. Here’s we identified the issue due to SpiFly and CDI.
>
> Don’t get my wrong, it should be improved, but not a big deal for OSGi
> designed module.
>
> Regards
> JB
>
> > Le 16 oct. 2020 à 07:30, Romain Manni-Bucau <rmannibu...@gmail.com> a
> écrit :
> >
> > To try to help on the different points you mention:
> >
> > 1.a prerequisite is good when  you have two stagings - order to respect
> to
> > install a full feature - so it is a very rare and limited case (in my
> app I
> > have 5 for ex)
> > 1.b requirements doesn't help with the order (until a framework
> extension),
> > just with "start" which fails so you can still have a bundle starting and
> > not having some dependency so at the end order is still required
> > 2. the comparator is not sufficient by itself, all the Set and Map are
> not
> > sorted in karaf featureservice/felix resolver so they also break the
> order
> >
> > So at the end I think the order is a requirement of the features - but
> > still amazed it didnt pop up before.
> >
> > 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 ven. 16 oct. 2020 à 05:59, Jean-Baptiste Onofre <j...@nanthrax.net> a
> > écrit :
> >
> >> The comparator based on symbolic name is to have something deterministic
> >> but doesn’t necessary match.
> >> I would like to check If using requirement in a feature would help (I’m
> >> afraid it would block the installation but not guarantee the order
> though).
> >>
> >> So, I think it’s worth to evaluate/improve the comparator to have
> >> something more "user logic".
> >>
> >> I will create a Jira and check different scenario.
> >>
> >> Regards
> >> JB
> >>
> >>> Le 15 oct. 2020 à 17:43, Łukasz Dywicki <l...@code-house.org> a écrit
> :
> >>>
> >>> 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