I don't know the internals of Felix framework
well. But in discussions with Richard Hall I know it used to have
a rather coarse grain locking strategy for installing, resolving and setting
of start-levels. This lock may be preventing the situation by blocking
some thread from starting the bundles while all the bundles get installed.
The Equinox Luna release redid its locking strategy in the Equinox
framework to allow more concurrent read-access to the internal bundle state
What I suspect is going on is that in
a background thread karaf is installing and starting bundles and setting
their start-level value one-by-one, instead of installing all bundles,
then setting their start-levels and finally starting all bundles. Meanwhile
another thread (the framework start-level thread) is performing the background
operation to set the bundle start-levels (one-by-one). Since the
bundles have been marked for start and their start-level is satisfied the
framework attempts to start the bundle. But the bundle may not be
resolved yet, and it may not be resolvable because karaf has not installed
all the necessary bundles yet.
I suspect you are getting "lucky"
on felix because something in its locking strategy is blocking the unlucky
start-level thread while karaf finishes installing all the necessary bundles.
06/21/2016 08:20 AM Subject:
How to find the newest equinox release? Sent by:
Thanks for the explanations. The new repo sounds very
good. I hope you plan to also publish to central at some point but having
a repo at all would be a really big step. I have the sources but it is a bit difficult to compare to felix if they
do not reflect a complete release. So for example it is difficult to see
which issues should be fixed and which not.
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1498)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:] at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:] at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.10.2.v20150203-1939.jar:]
From the code and trace this could mean that the framework start level
was changed. So the bundles are started. Is this correct? Strangely this seems to happen while karaf is installing the individual
bundles. So only some of them are installed and the resolve fails. I am not sure where this start level change originates from but if I switch
to felix this does not seem to happen.
So something seems to be different between the two frameworks.
I would be happy about any hints. Apart from that I will dig into the karaf
feature service to get an idea what is happening there that could trigger
this. I originally thought that karaf might set the bundle start level at this point but I am not sure.
On 21.06.2016 14:55, Thomas Watson wrote: We just setup a nexus repo for the Equinox
project but still need to setup the process for populating it with the
As for the Felix resolver source. We have needed to keep up with
the very latest in trunk to fix bugs as needed. When the bug is critical
(for example, prevents Eclipse from launching) I fix the bugs first in
Equinox and (always) immediately contribute back to felix trunk the fix.
Are you not able to find the source for Equinox? The equinox
and eclipse SDKs contain the source jars which include the felix source
included in Equinox.
Unfortunately this release does not seem to be available in maven central
at all. The latest release there seems to be <dependency> <groupId>org.eclipse.tycho</groupId> <artifactId>org.eclipse.osgi</artifactId> <version>3.10.101.v20150820-1432</version> </dependency>
So this one seems to be provided by tycho now? Are these releases by birt
and tycho guaranteed to reflect the real equinox releases or are they maybe
patching equinox? Is there any better way? Does equinox have any maven repo where it puts
its official releases? I think there were discussions about that a while
ago but the discussion was kind of stuck at some point.
Another question is about the included felix resolver. The last time I
looked into this the resolver sources were copied into the equinox sources.
They were not equal to any release of the felix resolver. Instead as far as I can remember the changes
were cherry picked from some of the resolver commits. This makes it really
difficult to tell how equinox behaves. Is there any improvement in sight?