It does look like the same issue. Got the trunk/framework. mvn clean install gives:
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ org.apache.felix.framework --- Dec 20, 2012 3:54:59 PM org.sonatype.guice.bean.reflect.Logs$JULSink warn WARNING: Error injecting: org.apache.maven.plugin.CompilerMojo java.lang.NoClassDefFoundError: org/codehaus/plexus/compiler/util/scan/InclusionScanException Thanks, jad. On Thu, Dec 20, 2012 at 3:22 PM, Richard S. Hall <[email protected]>wrote: > On 12/20/12 4:10 PM, Jad Naous wrote: > >> If a bundle undergoes a refresh while ipojo is still initializing >> components, a deadlock can happen. The issue is that if ipojo is >> attempting to register a service, it will be doing it while synchronizing >> on the InstanceCreator instance. It will then try to register a service >> which requires the framework's global lock. >> > > Registering a service doesn't require a global, just a bundle lock. I > think this could be related to: > > > https://issues.apache.org/**jira/browse/FELIX-3761<https://issues.apache.org/jira/browse/FELIX-3761> > > This avoid grabbing the bundle lock when registering a service, so maybe > it will help your situation. You could try to build the framework from > trunk and see if it makes a difference. > > If you aren't able to build from trunk, let me know and I'll try to > publish a snapshot build since I don't think we have a recent one (we > should do this no matter what). > > -> richard > > > >> If a refresh is happening in another thread, the refresh will be holding >> the framework's global lock, which will then call IPOJO's extender, which >> then attempts to call a method on InstanceCreator, hence leading to the >> deadlock. >> >> Here are the stack traces: >> >> Daemon Thread [Thread-1] (Suspended) >> Object.wait(long) line: not available [native method] >> Object[](Object).wait() line: 485 >> Felix.acquireBundleLock(**BundleImpl, int) line: 4871 >> Felix.registerService(**BundleImpl, String[], Object, Dictionary) line: >> 3205 >> BundleContextImpl.**registerService(String[], Object, Dictionary) line: >> 346 >> IPojoContext.registerService(**String[], Object, Dictionary) line: 385 >> ProvidedService.**registerService() line: 362 >> ProvidedServiceHandler.__M_**stateChanged(int) line: 509 >> ProvidedServiceHandler.**stateChanged(int) line: not available >> InstanceManager.setState(int) line: 536 >> InstanceManager.start() line: 418 >> ComponentFactory.**createInstance(Dictionary, IPojoContext, >> HandlerManager[]) >> line: 179 >> ComponentFactory(IPojoFactory)**.createComponentInstance(**Dictionary, >> ServiceContext) line: 310 >> ComponentFactory(IPojoFactory)**.createComponentInstance(**Dictionary) >> line: 239 >> InstanceCreator$**ManagedInstance.create(**IPojoFactory) line: 355 >> InstanceCreator.addInstance(**Dictionary, long) line: 89 >> Extender.parse(Bundle, String) line: 306 >> Extender.startManagementFor(**Bundle) line: 237 >> Extender.access$600(Extender, Bundle) line: 52 >> Extender$CreatorThread.run() line: 769 >> Thread.run() line: 662 >> >> Daemon Thread [FelixFrameworkWiring] (Suspended) >> InstanceCreator.**removeInstancesFromBundle(**long) line: 116 >> Extender.closeManagementFor(**Bundle) line: 171 >> Extender.bundleChanged(**BundleEvent) line: 153 >> EventDispatcher.**invokeBundleListenerCallback(**Bundle, EventListener, >> EventObject) line: 868 >> EventDispatcher.**fireEventImmediately(**EventDispatcher, int, Map, >> EventObject, Dictionary) line: 789 >> EventDispatcher.**fireBundleEvent(BundleEvent, Framework) line: 514 >> Felix.fireBundleEvent(int, Bundle) line: 4244 >> Felix.stopBundle(BundleImpl, boolean) line: 2351 >> Felix$RefreshHelper.stop() line: 4629 >> Felix.refreshPackages(**Collection, FrameworkListener[]) line: 3951 >> FrameworkWiringImpl.run() line: 172 >> Thread.run() line: 662 >> >> >
