[ https://issues.apache.org/jira/browse/OAK-9200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17192095#comment-17192095 ]
Vinod Holani commented on OAK-9200: ----------------------------------- [~mreutegg] please review attached patch. I have created PR at [0]. And there is already a test checking if whiteboard is not available then refer to default one at [1]. Not sure if we need to simulate the issue. [0] : https://github.com/apache/jackrabbit-oak/pull/249 [1] : https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImplTest.java#L124 > Oak BlobAccessProvider reference in UserConfigurationImpl fails and leads to > performance issue > ---------------------------------------------------------------------------------------------- > > Key: OAK-9200 > URL: https://issues.apache.org/jira/browse/OAK-9200 > Project: Jackrabbit Oak > Issue Type: Bug > Components: blob, documentmk > Affects Versions: 1.22.4, 1.32.0 > Reporter: Vinod Holani > Assignee: Vinod Holani > Priority: Major > Attachments: OAK-9200.patch > > > Threads are stuck as below logs. The cause of this is that the Oak > BlobAccessProvider reference in UserConfigurationImpl doesn't get initialized > because the UserConfigurationImpl component is starting before the > OakBlobAccessProvider > java.lang.Thread.State: RUNNABLE > at > org.apache.felix.framework.Felix.removeServiceListener(Felix.java:3684) > at > org.apache.felix.framework.BundleContextImpl.removeServiceListener(BundleContextImpl.java:271) > at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:369) > - locked <0x00007f5a3508f3b8> (a org.osgi.util.tracker.ServiceTracker) > at > org.apache.jackrabbit.oak.osgi.OsgiWhiteboard$3.stop(OsgiWhiteboard.java:168) > at > org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.getService(WhiteboardUtils.java:194) > at > org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.getService(WhiteboardUtils.java:144) > at > org.apache.jackrabbit.oak.security.user.UserConfigurationImpl.getBlobAccessProvider(UserConfigurationImpl.java:275) > at > org.apache.jackrabbit.oak.security.user.UserConfigurationImpl.getUserManager(UserConfigurationImpl.java:251) > at > org.apache.jackrabbit.oak.security.authentication.token.TokenProviderImpl. > (TokenProviderImpl.java:138) > at > org.apache.jackrabbit.oak.security.authentication.token.TokenConfigurationImpl.getTokenProvider(TokenConfigurationImpl.java:162) > at > org.apache.jackrabbit.oak.spi.security.authentication.token.CompositeTokenConfiguration$1.apply(CompositeTokenConfiguration.java:46) > at > org.apache.jackrabbit.oak.spi.security.authentication.token.CompositeTokenConfiguration$1.apply(CompositeTokenConfiguration.java:43) > at > com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:572) > at > java.util.AbstractList$Itr.next(java.base@11.0.4/AbstractList.java:371) > at > org.apache.jackrabbit.oak.spi.security.authentication.token.CompositeTokenProvider.newInstance(CompositeTokenProvider.java:49) > at > org.apache.jackrabbit.oak.spi.security.authentication.token.CompositeTokenConfiguration.getTokenProvider(CompositeTokenConfiguration.java:49) > at > org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule.getTokenProvider(TokenLoginModule.java:220) > at > org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule.login(TokenLoginModule.java:127) > at > org.apache.felix.jaas.boot.ProxyLoginModule.login(ProxyLoginModule.java:52) > at > javax.security.auth.login.LoginContext.invoke(java.base@11.0.4/LoginContext.java:726) > at > javax.security.auth.login.LoginContext$4.run(java.base@11.0.4/LoginContext.java:665) > at > javax.security.auth.login.LoginContext$4.run(java.base@11.0.4/LoginContext.java:663) > at java.security.AccessController.doPrivileged(java.base@11.0.4/Native > Method) > at > javax.security.auth.login.LoginContext.invokePriv(java.base@11.0.4/LoginContext.java:663) > at > javax.security.auth.login.LoginContext.login(java.base@11.0.4/LoginContext.java:574) > at > org.apache.jackrabbit.oak.core.ContentRepositoryImpl.login(ContentRepositoryImpl.java:163) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl.login(RepositoryImpl.java:282) > at > org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl.login(RepositoryImpl.java:225) > at > org.apache.jackrabbit.oak.jcr.session.SessionImpl.impersonate(SessionImpl.java:275) > at > com.adobe.granite.repository.impl.CRX3SessionImpl.impersonate(CRX3SessionImpl.java:149) > at > org.apache.sling.jcr.base.AbstractSlingRepository2.createServiceSession(AbstractSlingRepository2.java:201) > at > com.adobe.granite.repository.impl.SlingRepositoryImpl.createServiceSession(SlingRepositoryImpl.java:135) > at > org.apache.sling.jcr.base.AbstractSlingRepository2.createServiceSession(AbstractSlingRepository2.java:171) > at > org.apache.sling.jcr.base.AbstractSlingRepository2.loginService(AbstractSlingRepository2.java:381) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrProviderStateFactory.createProviderState(JcrProviderStateFactory.java:115) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.authenticate(JcrResourceProvider.java:304) > at > org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.authenticate(JcrResourceProvider.java:76) > at > org.apache.sling.resourceresolver.impl.providers.stateful.ProviderManager.authenticate(ProviderManager.java:161) > at > org.apache.sling.resourceresolver.impl.providers.stateful.ProviderManager.getOrCreateProvider(ProviderManager.java:87) > at > org.apache.sling.resourceresolver.impl.providers.stateful.ProviderManager.authenticateAll(ProviderManager.java:129) > at > org.apache.sling.resourceresolver.impl.ResourceResolverImpl.createControl(ResourceResolverImpl.java:142) > at org.apache.sling.resourceresolver.impl.ResourceResolverImpl. > (ResourceResolverImpl.java:103) > at org.apache.sling.resourceresolver.impl.ResourceResolverImpl. > (ResourceResolverImpl.java:97) > at > org.apache.sling.resourceresolver.impl.CommonResourceResolverFactoryImpl.getResourceResolverInternal(CommonResourceResolverFactoryImpl.java:280) > at > org.apache.sling.resourceresolver.impl.ResourceResolverFactoryImpl.getServiceResourceResolver(ResourceResolverFactoryImpl.java:89) -- This message was sent by Atlassian Jira (v8.3.4#803005)