You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Chetan Mehrotra (JIRA)" <ji...@apache.org> on 2013/01/31 14:59:13 UTC

[jira] [Commented] (SLING-2719) Deadlock in ResourceResolverFactoryActivator.checkFactoryPreconditions

    [ https://issues.apache.org/jira/browse/SLING-2719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13567643#comment-13567643 ] 

Chetan Mehrotra commented on SLING-2719:
----------------------------------------

Thread stacks referred in notes
[5]
"FelixFrameworkWiring" daemon prio=6 tid=0x0000000009749000 nid=0xfd4 waiting for monitor entry [0x0000000038bcb000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:330)
	- waiting to lock <0x000000079624ff08> (a org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator)
	at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.unbindResourceProviderFactory(ResourceResolverFactoryActivator.java:371)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)
	at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
	at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613)
	at org.apache.felix.scr.impl.helper.BaseMethod$NotResolved.invoke(BaseMethod.java:572)
	at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496)
	at org.apache.felix.scr.impl.helper.BindMethod.invoke(BindMethod.java:38)
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1404)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.invokeUnbindMethod(ImmediateComponentManager.java:327)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:530)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
	- locked <0x0000000796d5d030> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
	at com.day.crx.sling.server.impl.jmx.ManagedRepository.deactivate(ManagedRepository.java:328)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)
	at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
	at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613)
	at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496)
	at org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:286)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:160)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1661)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:717)
	at org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
	at org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
	at org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
	at org.apache.felix.framework.Felix.ungetService(Felix.java:3502)
	at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
	at org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:961)
	at org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1204)
	at org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:1031)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:298)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:160)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1305)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
	- locked <0x00000007944dae38> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
	- locked <0x00000007944da9b0> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.access$000(Felix.java:74)
	at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
	at org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
	at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
	- locked <0x00000007944da478> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.dispose(AbstractComponentManager.java:1617)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:574)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:404)
	at org.apache.felix.scr.impl.config.ImmediateComponentHolder.disposeComponents(ImmediateComponentHolder.java:371)
	at org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:320)
	at org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:316)
	at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:183)
	at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)
	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:514)
	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4319)
	at org.apache.felix.framework.Felix.stopBundle(Felix.java:2421)
	at org.apache.felix.framework.Felix$RefreshHelper.stop(Felix.java:4704)
	at org.apache.felix.framework.Felix.refreshPackages(Felix.java:4026)
	at org.apache.felix.framework.FrameworkWiringImpl.run(FrameworkWiringImpl.java:172)
	at java.lang.Thread.run(Thread.java:662)

[6] "FelixStartLevel" daemon prio=6 tid=0x000000002c81a800 nid=0x96c in Object.wait() [0x000000003557c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x000000079415eca0> (a [Ljava.lang.Object;)
	at java.lang.Object.wait(Object.java:485)
	at org.apache.felix.framework.Felix.acquireGlobalLock(Felix.java:5019)
	- locked <0x000000079415eca0> (a [Ljava.lang.Object;)
	at org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:451)
	at org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1578)
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1478)
	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1882)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1356)
	at org.apache.felix.framework.ServiceRegistrationImpl$ServiceReferenceImpl.isAssignableTo(ServiceRegistrationImpl.java:548)
	at org.apache.felix.framework.util.Util.isServiceAssignable(Util.java:280)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:916)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
	- locked <0x000000079695a188> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:644)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:688)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1481)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:333)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:159)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
	- locked <0x0000000796959eb8> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:644)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:688)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1481)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:333)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:159)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
	- locked <0x0000000796959bc8> (a java.util.concurrent.atomic.AtomicReference)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:644)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:688)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1481)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:333)
	at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:159)
	at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
	at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
	at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
	at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
	at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:320)
	at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:324)
	- locked <0x000000079624ff08> (a org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator)
	at org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.activate(ResourceResolverFactoryActivator.java:282)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)
	at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
	at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613)
	at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496)
	at org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:251)
	at org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:119)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1518)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:261)
	at org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:328)
	at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:158)
	at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:113)
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:261)
	at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:179)
	at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)
	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)
	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:514)
	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4319)
	at org.apache.felix.framework.Felix.startBundle(Felix.java:1993)
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1261)
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:298)
	at java.lang.Thread.run(Thread.java:662)
                
> Deadlock in ResourceResolverFactoryActivator.checkFactoryPreconditions
> ----------------------------------------------------------------------
>
>                 Key: SLING-2719
>                 URL: https://issues.apache.org/jira/browse/SLING-2719
>             Project: Sling
>          Issue Type: Bug
>          Components: ResourceResolver
>    Affects Versions: Resource Resolver 1.0.2
>         Environment: JBoss
>            Reporter: Chetan Mehrotra
>              Labels: deadlock
>
> We are seeing intermittent issues of deadlock while running a Sling based webapp in an app server like JBoss. The deadlock is being seen between the FelixFrameworkWiring and FelixStartLevel threads. 
> For example analyzing the order of locks taken in the threaddump-1.log (shown below). Here the FelixFrameworkWiring thread has the Global bundle lock at Felix level [1] and is waiting for the lock in ResourceResolverFactoryActivator.checkFactoryPreconditions. While the FelixStartLevel thread has the lock on RRF and is waiting for global lock. Thus resulting in a deadlock
> The FelixFrameworkWiring [5] is busy in deactivating components because of a package refresh earlier (which lead to repository getting shutdown and thus triggering deactivation of ResourceResolverFactoryActivator). While the FelixStartLevel [6] thread has activated ResourceResolverFactoryActivator (thus hold the lock) and later requires global lock for some operation.
> Looking at the code for ResourceResolverFactoryActivator.checkFactoryPreconditions [2] it appears to take and hold a lock (on this) while making a call to OSGi container. Such a usage *might* cause issues like deadlock. So it would be better if the ResourceResolverFactoryActivator does not hold any lock while making the call to container services [3]
> "FelixFrameworkWiring"
> - locked <0x00000007944da478> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - locked <0x00000007944da9b0> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - locked <0x00000007944dae38> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - locked <0x0000000796d5d030> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - waiting to lock <0x000000079624ff08> (a org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator) org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:330)
> "FelixStartLevel"
> - locked <0x000000079624ff08> (a org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator) org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:324)
> - locked <0x0000000796959bc8> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
> - locked <0x0000000796959eb8> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
> - locked <0x000000079695a188> (a java.util.concurrent.atomic.AtomicReference) org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
> - waiting <0x000000079415eca0> (a [Ljava.lang.Object;) org.apache.felix.framework.Felix.acquireGlobalLock(Felix.java:5019)
> [1] This has been confirmed via the value for m_globalLockThread of Felix instance in Heap Dump
> [2] https://github.com/apache/sling/blob/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java#L313
> [3] http://njbartlett.name/files/osgibook_preview_20091217.pdf (Section 6.4 Don’t Hold Locks when Calling Foreign Code)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira