[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[equinox-dev] Framework extensions - and Eclipse dropins issue

Hello everyone (and Thomas in particular :-)),

It's a well known fact that p2 reconciler is invoked in
BundleActivator.start method. I think of it as a design issue (or even
contract violation) because #start() should be short, but what's more
important, the framework is restarted from within this #start method.

Now, thanks to existing bugs in bundle depencies, restart is never
complete (f.e. system bundle and common equinox bundles are not
restarted), which leads to CCE if large chunks of software are deployed
via dropins. I've patches for those bugs, but I end up with:

org.osgi.framework.BundleException: State change in progress for bundle
"reference:file:plugins/org.eclipse.equinox.p2.reconciler.dropins_1.1.200.v20130903-1238.jar" by thread "Start Level Event Dispatcher".
	at
org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1088)
	at
org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:564)
	at
org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)

which means more or less that dropins can't be stopped because it is
still starting. I couldn't see any way of fixing this until I found
recently https://bugs.eclipse.org/bugs/show_bug.cgi?id=253244#c27 which
brought some hope.

Is it possible (or will it be possible) to restart framework immediately
after current method completes? What I'd like to write (in dropins)
start {
	doP2magic();
	if(restartRequired)
		restartFrameworkWithoutStartingAnyNewBundles();
}
The point is that restart has to happen after start method ends, but
before any other (especially ui) bundle is started.

-- 
Krzysztof Daniel <kdaniel@xxxxxxxxxx>
Red Hat