Hi P2 masters, Eclipse packages in Fedora use dropins as a primary deployment mechanism, because there is no way to make P2 and RPM working together (which I can explain in details upon request or at EclipseCon France).
Shared scenarios were greatly improved in Kepler thanks to Ericsson support. But there is still one more issue that is not resolved - and I guess not really visible unless you use shared deployments at large scale, which is related to the implicit dependencies in Eclipse - causing incomplete bundles refresh and in turn various ClassCastExceptions, NoClassDefFoundErrors during first startup [1][2]. This really makes Eclipse in Fedora to look unprofessional. After I tracked those implicit dependencies, and built Eclipse with proper patches, it turned out dropins did not worked anymore as expected due to the fact that during the OSGi refresh core P2 bundles were restarted, and the OSGi attempted to restart dropins synchronizer, which failed because of being in the "starting" state. The scenario once more in bullet points: * a bundle providing vital classes put in the dropins (f.e. javax.xml) * reconciler goes into starting state * reconciler installs javax.xml, writes timestamps and applies configuration * osgi starts refreshing bundles (stopping them and starting) * osgi tries to restart reconciler (which is still starting, an exception occurs) In the end: timestamps are stored, bundles.info seems to be ok, but OSGi cache is old, because the new configuration was not applied. Eclipse will not pick it unless invoked explicitly with -clean. It does not make Eclipse in Fedora unprofessional, it just sucks! As a result - I had to revert my patch for [2] and accept first-run problems. I've tried to come up with any creative solution, but did not managed to get anything valuable here: * OSGi can't really interrupt start method - man, that would be a hack! * Reconciliation can't be moved out of a start method - because the Eclipse start process must be blocked until reconciliation is complete. This applied to an applyConfiguration, too. * External reconciler cannot be run, because nothing should be stored in a master configuration. Looks like a dead end. Any suggestions how should I proceed with this? [1] Bug 297769 - Split packages are not refreshed properly https://bugs.eclipse.org/bugs/show_bug.cgi?id=297769 [2] Bug 406359 - Yet another class surviving refresh invoked by dropins https://bugs.eclipse.org/bugs/show_bug.cgi?id=406359 Regards, -- Krzysztof Daniel <[email protected]> Red Hat _______________________________________________ p2-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/p2-dev
