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
>>
>>
>

Reply via email to