[ https://issues.apache.org/jira/browse/OAK-2401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14589325#comment-14589325 ]
Chetan Mehrotra edited comment on OAK-2401 at 6/17/15 8:59 AM: --------------------------------------------------------------- bq. declare the reference to the BlobStore to be static, greedy and optional [~frm] Not sure if that is the problem. {{SegmentNodeStoreService}} does not make call to foreign code from within the synchronized block (except in deactivate, explained later in comment). So its doing the right thing there. At least for this issue the problem was in Discovery as it was calling to framework while holding the locks. As you noted bq. The biggest issue, in my opinion, is synchronized keyword on the getNodeStore() method. This excessive locking interferes with the lifecycle of the component in the OSGi framework. The required fix here would be # Drop synchronized from {{getNodeStore}} and mark delegate as volatile - A NodeStore instance would only be available to outside world once it is registered with OSGi ServiceRegistery and by that time NodeStore would be properly initialized. So for startup case no call can come for {{getNodeStore}} untill it gets initialized. # Drop synchronized from the deactivate - By contract the deactivate would only be called from a single thread. Or if we want to play safe do the unregistering part outside of synchronized. This would ensure that we do not hold any lock while calling to OSGi (which infact is the root cause of deadlock here) With this change for above scenario should work fine. I think we should was (Author: chetanm): bq. declare the reference to the BlobStore to be static, greedy and optional [~frm] Not sure if that is the problem. {{SegmentNodeStoreService}} does not make call to foreign code from within the synchronized block. So its doing the right thing there. At least for this issue the problem was in Discovery as it was calling to framework while holding the locks. As you noted bq. The biggest issue, in my opinion, is synchronized keyword on the getNodeStore() method. This excessive locking interferes with the lifecycle of the component in the OSGi framework. The required fix here would be # Drop synchronized from {{getNodeStore}} and mark delegate as volatile - A NodeStore instance would only be available to outside world once it is registered with OSGi ServiceRegistery and by that time NodeStore would be properly initialized. So for startup case no call can come for {{getNodeStore}} untill it gets initialized. # Drop synchronized from the deactivate - By contract the deactivate would only be called from a single thread. Or if we want to play safe do the unregistering part outside of synchronized. This would ensure that we do not hold any lock while calling to OSGi (which infact is the root cause of deadlock here) With this change for above scenario should work fine. I think we should > SegmentNodeStoreService prone to deadlocks > ------------------------------------------ > > Key: OAK-2401 > URL: https://issues.apache.org/jira/browse/OAK-2401 > Project: Jackrabbit Oak > Issue Type: Bug > Components: segmentmk > Reporter: Alex Parvulescu > Assignee: Alex Parvulescu > Priority: Blocker > Labels: resilience > Fix For: 1.3.1, 1.2.3, 1.0.16 > > Attachments: OAK-2401-01.patch, OAK-2401-02.patch, OAK-2401-03.patch, > OAK-2401-04-testcase-fix.patch, OAK-2401.patch > > > The SegmentNodeStoreService is prone to deadlocks because of the way in which > is synchronizes access to the _SegmentNodeStore_ delegate. > The issue can now be seen on #deactivate, when the deregistration is being > synchronously broadcast and if a referring service calls #getNodeStore the > deadlock happens. > {code} > Found one Java-level deadlock: > ============================= > "qtp844483043-936": > waiting to lock monitor 0x000001d1aacc7208 (object 0x000001d231f52698, a > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService), > which is held by "CM Event Dispatcher (Fire ConfigurationEvent: > pid=org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService)" > "CM Event Dispatcher (Fire ConfigurationEvent: > pid=org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService)": > waiting to lock monitor 0x000001d4d0907c88 (object 0x000001d2334be930, a > java.lang.Object), > which is held by "pool-5-thread-4" > "pool-5-thread-4": > waiting to lock monitor 0x000001d1aacc7208 (object 0x000001d231f52698, a > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService), > which is held by "CM Event Dispatcher (Fire ConfigurationEvent: > pid=org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService)" > Java stack information for the threads listed above: > =================================================== > "qtp844483043-936": > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.getNodeStore(SegmentNodeStoreService.java:144) > - waiting to lock <0x000001d231f52698> (a > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.getNodeStore(SegmentNodeStoreService.java:73) > at > org.apache.jackrabbit.oak.spi.state.ProxyNodeStore.getRoot(ProxyNodeStore.java:35) > at > org.apache.jackrabbit.oak.core.MutableRoot.<init>(MutableRoot.java:160) > at > org.apache.jackrabbit.oak.core.ContentSessionImpl.getLatestRoot(ContentSessionImpl.java:110) > at > org.apache.jackrabbit.oak.spi.security.authentication.AbstractLoginModule.getRoot(AbstractLoginModule.java:403) > at > org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule.getTokenProvider(TokenLoginModule.java:215) > at > org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule.login(TokenLoginModule.java:128) > at > org.apache.felix.jaas.boot.ProxyLoginModule.login(ProxyLoginModule.java:52) > at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at javax.security.auth.login.LoginContext.invoke(LoginContext.java:762) > at > javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) > at javax.security.auth.login.LoginContext$4.run(LoginContext.java:690) > at javax.security.auth.login.LoginContext$4.run(LoginContext.java:688) > at java.security.AccessController.doPrivileged(Native Method) > at > javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:687) > at javax.security.auth.login.LoginContext.login(LoginContext.java:595) > at > org.apache.jackrabbit.oak.core.ContentRepositoryImpl.login(ContentRepositoryImpl.java:161) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl.login(RepositoryImpl.java:256) > at > com.adobe.granite.repository.impl.CRX3RepositoryImpl.login(CRX3RepositoryImpl.java:92) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl.login(RepositoryImpl.java:197) > at > org.apache.sling.jcr.base.AbstractSlingRepository2.login(AbstractSlingRepository2.java:297) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory.getResourceProviderInternal(JcrResourceProviderFactory.java:289) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory.getResourceProvider(JcrResourceProviderFactory.java:201) > at > org.apache.sling.resourceresolver.impl.tree.ResourceProviderFactoryHandler.login(ResourceProviderFactoryHandler.java:164) > at > org.apache.sling.resourceresolver.impl.tree.RootResourceProviderEntry.loginToRequiredFactories(RootResourceProviderEntry.java:95) > at > org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolverInternal(CommonResourceResolverFactoryImpl.java:109) > at > org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolver(CommonResourceResolverFactoryImpl.java:90) > at > org.apache.sling.resourceresolver.impl.ResourceResolverFactoryImpl.getResourceResolver(ResourceResolverFactoryImpl.java:93) > at > org.apache.sling.auth.core.impl.SlingAuthenticator.getAnonymousResolver(SlingAuthenticator.java:839) > at > org.apache.sling.auth.core.impl.SlingAuthenticator.doHandleSecurity(SlingAuthenticator.java:478) > at > org.apache.sling.auth.core.impl.SlingAuthenticator.handleSecurity(SlingAuthenticator.java:438) > at > org.apache.sling.engine.impl.SlingHttpContext.handleSecurity(SlingHttpContext.java:121) > at > org.apache.felix.http.base.internal.context.ServletContextImpl.handleSecurity(ServletContextImpl.java:335) > at > org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:337) > at > org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:300) > at > org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:93) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:50) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:128) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:55) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:89) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:298) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:290) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:115) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:76) > at > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:49) > at > org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) > at org.eclipse.jetty.server.Server.handle(Server.java:370) > at > org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) > at > org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971) > at > org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033) > at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) > at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) > at > org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) > at > org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667) > at > org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) > at java.lang.Thread.run(Thread.java:745) > "CM Event Dispatcher (Fire ConfigurationEvent: > pid=org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService)": > at > org.apache.sling.discovery.impl.DiscoveryServiceImpl.unbindTopologyEventListener(DiscoveryServiceImpl.java:242) > - waiting to lock <0x000001d2334be930> (a java.lang.Object) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231) > at > org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39) > at > org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624) > at > org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508) > at > org.apache.felix.scr.impl.helper.BindMethod.invoke(BindMethod.java:37) > at > org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1717) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.invokeUnbindMethod(SingleComponentManager.java:404) > at > org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:376) > at > org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:304) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1506) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1401) > at > org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:1261) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1440) > at > org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:940) > at > org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794) > at > org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544) > at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4425) > at org.apache.felix.framework.Felix.access$000(Felix.java:75) > at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:402) > at > org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:153) > at > org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:128) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:1011) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:992) > at > org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:141) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterService(AbstractComponentManager.java:1054) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:900) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:883) > at > org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.removedService(DependencyManager.java:974) > at > org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.removedService(DependencyManager.java:895) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1506) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1401) > at > org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:1261) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1440) > at > org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:940) > at > org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794) > at > org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544) > at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4425) > at org.apache.felix.framework.Felix.access$000(Felix.java:75) > at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:402) > at > org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:153) > at > org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:128) > at > org.apache.sling.jcr.base.AbstractSlingRepositoryManager.unregisterService(AbstractSlingRepositoryManager.java:258) > at > org.apache.sling.jcr.base.AbstractSlingRepositoryManager.stop(AbstractSlingRepositoryManager.java:345) > at > com.adobe.granite.repository.impl.SlingRepositoryManager.deactivate(SlingRepositoryManager.java:194) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231) > at > org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39) > at > org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624) > at > org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508) > at > org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.disposeImplementationObject(SingleComponentManager.java:355) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.deleteComponent(SingleComponentManager.java:170) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:908) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:883) > at > org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.removedService(DependencyManager.java:974) > at > org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.removedService(DependencyManager.java:895) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1506) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1401) > at > org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:1261) > at > org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1440) > at > org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:940) > at > org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:794) > at > org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:544) > at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4425) > at org.apache.felix.framework.Felix.access$000(Felix.java:75) > at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:402) > at > org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:153) > at > org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:128) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.unregisterNodeStore(SegmentNodeStoreService.java:320) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.deactivate(SegmentNodeStoreService.java:295) > - locked <0x000001d231f52698> (a > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231) > at > org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39) > at > org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624) > at > org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508) > at > org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.disposeImplementationObject(SingleComponentManager.java:355) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.deleteComponent(SingleComponentManager.java:170) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.doDeactivate(AbstractComponentManager.java:908) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:883) > at > org.apache.felix.scr.impl.manager.SingleComponentManager.reconfigure(SingleComponentManager.java:638) > at > org.apache.felix.scr.impl.config.ConfigurableComponentHolder.configurationUpdated(ConfigurableComponentHolder.java:328) > at > org.apache.felix.scr.impl.config.ConfigurationSupport.configurationEvent(ConfigurationSupport.java:290) > at > org.apache.felix.cm.impl.ConfigurationManager$FireConfigurationEvent.sendEvent(ConfigurationManager.java:2032) > at > org.apache.felix.cm.impl.ConfigurationManager$FireConfigurationEvent.run(ConfigurationManager.java:2002) > at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:103) > at java.lang.Thread.run(Thread.java:745) > "pool-5-thread-4": > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.getNodeStore(SegmentNodeStoreService.java:144) > - waiting to lock <0x000001d231f52698> (a > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.getNodeStore(SegmentNodeStoreService.java:73) > at > org.apache.jackrabbit.oak.spi.state.ProxyNodeStore.getRoot(ProxyNodeStore.java:35) > at > org.apache.jackrabbit.oak.core.MutableRoot.<init>(MutableRoot.java:160) > at > org.apache.jackrabbit.oak.core.ContentSessionImpl.getLatestRoot(ContentSessionImpl.java:110) > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.<init>(SessionDelegate.java:160) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl$1.<init>(RepositoryImpl.java:273) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl.createSessionDelegate(RepositoryImpl.java:271) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl.login(RepositoryImpl.java:257) > at > com.adobe.granite.repository.impl.CRX3RepositoryImpl.login(CRX3RepositoryImpl.java:92) > at > com.adobe.granite.repository.impl.SlingRepositoryImpl$2.run(SlingRepositoryImpl.java:108) > at > com.adobe.granite.repository.impl.SlingRepositoryImpl$2.run(SlingRepositoryImpl.java:100) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAsPrivileged(Subject.java:536) > at > com.adobe.granite.repository.impl.SlingRepositoryImpl.createAdministrativeSession(SlingRepositoryImpl.java:100) > at > org.apache.sling.jcr.base.AbstractSlingRepository2.loginAdministrative(AbstractSlingRepository2.java:362) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory.getResourceProviderInternal(JcrResourceProviderFactory.java:246) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProviderFactory.getAdministrativeResourceProvider(JcrResourceProviderFactory.java:209) > at > org.apache.sling.resourceresolver.impl.tree.ResourceProviderFactoryHandler.login(ResourceProviderFactoryHandler.java:162) > at > org.apache.sling.resourceresolver.impl.tree.RootResourceProviderEntry.loginToRequiredFactories(RootResourceProviderEntry.java:95) > at > org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolverInternal(CommonResourceResolverFactoryImpl.java:109) > at > org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getAdministrativeResourceResolver(CommonResourceResolverFactoryImpl.java:76) > at > org.apache.sling.resourceresolver.impl.ResourceResolverFactoryImpl.getAdministrativeResourceResolver(ResourceResolverFactoryImpl.java:98) > at > org.apache.sling.discovery.impl.cluster.ClusterViewServiceImpl.getClusterView(ClusterViewServiceImpl.java:132) > at > org.apache.sling.discovery.impl.DiscoveryServiceImpl.getTopology(DiscoveryServiceImpl.java:418) > at > org.apache.sling.discovery.impl.DiscoveryServiceImpl.handlePotentialTopologyChange(DiscoveryServiceImpl.java:466) > at > org.apache.sling.discovery.impl.DiscoveryServiceImpl.handleTopologyChanged(DiscoveryServiceImpl.java:650) > - locked <0x000001d2334be930> (a java.lang.Object) > at > org.apache.sling.discovery.impl.topology.TopologyChangeHandler.handleTopologyChanged(TopologyChangeHandler.java:134) > at > org.apache.sling.discovery.impl.topology.TopologyChangeHandler.handleEvent(TopologyChangeHandler.java:124) > at > org.apache.felix.eventadmin.impl.handler.EventHandlerProxy.sendEvent(EventHandlerProxy.java:412) > at > org.apache.felix.eventadmin.impl.tasks.SyncDeliverTasks.execute(SyncDeliverTasks.java:118) > at > org.apache.felix.eventadmin.impl.handler.EventAdminImpl.sendEvent(EventAdminImpl.java:114) > at > org.apache.felix.eventadmin.impl.security.EventAdminSecurityDecorator.sendEvent(EventAdminSecurityDecorator.java:96) > at > org.apache.sling.jcr.resource.internal.OakResourceListener.sendOsgiEvent(OakResourceListener.java:243) > at > org.apache.sling.jcr.resource.internal.OakResourceListener.changed(OakResourceListener.java:133) > at > org.apache.jackrabbit.oak.plugins.observation.NodeObserver$NodeEventHandler.leave(NodeObserver.java:208) > at > org.apache.jackrabbit.oak.plugins.observation.FilteredHandler.leave(FilteredHandler.java:51) > at > org.apache.jackrabbit.oak.plugins.observation.EventGenerator$Continuation.run(EventGenerator.java:175) > at > org.apache.jackrabbit.oak.plugins.observation.EventGenerator.generate(EventGenerator.java:118) > at > org.apache.jackrabbit.oak.plugins.observation.NodeObserver.contentChanged(NodeObserver.java:156) > at > org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:117) > at > org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:111) > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Found 1 deadlock. > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)