You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "modelrepoistory (JIRA)" <ji...@apache.org> on 2017/08/25 03:13:00 UTC

[jira] [Created] (JCR-4174) lock resource deadlock when using mssql2016

modelrepoistory created JCR-4174:
------------------------------------

             Summary: lock resource deadlock when using mssql2016
                 Key: JCR-4174
                 URL: https://issues.apache.org/jira/browse/JCR-4174
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-core
    Affects Versions: 2.2
         Environment: cluster JR + mssql2016
            Reporter: modelrepoistory
             Fix For: 2.2


   Recently, we need to support MSSQL2016. After running some test in one cluster environment, we meet following dead lock issue. I have two questions 
   1. Based on what I know, synchronizing repository doesn't need acquire write lock, so why deadlock happened 
   2. The exception handling looks not good on SharedItemStateManager.externalUpdate. In my case, some unexpected exception, i.e. UndeclaredThrowableException, is throw out, that's because some reflection is used when executing sql.  As this non-ItemStateException is thrown, SharedItemStateManager will not release the global writer lock, make repository in this VM not working. 

2017-08-18 19:01:00,296 ERROR [org.jboss.as.ejb3.invocation] WFLYEJB0034: EJB Invocation failed on component ...: javax.ejb.EJBException: java.lang.reflect.UndeclaredThrowableException 
        at org.jboss.as.ejb3.tx.BMTInterceptor.handleException(BMTInterceptor.java:83) 
        at org.jboss.as.ejb3.tx.EjbBMTInterceptor.checkStatelessDone(EjbBMTInterceptor.java:91) 
        at org.jboss.as.ejb3.tx.EjbBMTInterceptor.handleInvocation(EjbBMTInterceptor.java:106) 
        at org.jboss.as.ejb3.tx.BMTInterceptor.processInvocation(BMTInterceptor.java:58) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:437) 
        at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73) 
        at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
        at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.interceptors.NonPooledEJBComponentInstanceAssociatingInterceptor.processInvocation(NonPooledEJBComponentInstanceAssociatingInterceptor.java:59)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:79) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.deployment.processors.EjbSuspendInterceptor.processInvocation(EjbSuspendInterceptor.java:53) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:67) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
        at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:634) 
        at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
        at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
        at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195) 
        at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:331) 
        at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$100(MethodInvocationMessageHandler.java:69) 
        at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:202) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
        at java.lang.Thread.run(Thread.java:748) 
        at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Caused by: java.lang.reflect.UndeclaredThrowableException 
        at com.sun.proxy.$Proxy62.next(Unknown Source) 
        at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:1028) 
        at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:654) 
        at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.load(AbstractBundlePersistenceManager.java:400) 
        at org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState(SharedItemStateManager.java:1819) 
        at org.apache.jackrabbit.core.state.SharedItemStateManager.doExternalUpdate(SharedItemStateManager.java:1552) 
        at org.apache.jackrabbit.core.state.SharedItemStateManager.externalUpdate(SharedItemStateManager.java:1504) 
        at org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.externalUpdate(RepositoryImpl.java:2269) 
        at org.apache.jackrabbit.core.cluster.ClusterNode.process(ClusterNode.java:814) 
        at org.apache.jackrabbit.core.cluster.ChangeLogRecord.process(ChangeLogRecord.java:498) 
        at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:760) 
        at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:235) 
        at org.apache.jackrabbit.core.journal.AbstractJournal.internalSync(AbstractJournal.java:209) 
        at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:189) 
        at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:308) 
        at org.apache.jackrabbit.core.session.SessionRefreshOperation.perform(SessionRefreshOperation.java:58) 
        at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200) 
        at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:355) 
        at org.apache.jackrabbit.core.SessionImpl.refresh(SessionImpl.java:765) 
        at org.apache.jackrabbit.jca.JCASessionHandle.refresh(JCASessionHandle.java:193) 
.... 
        at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:437) 
        at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:82) 
        at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:93) 
        at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) 
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
        at org.jboss.as.ejb3.tx.EjbBMTInterceptor.handleInvocation(EjbBMTInterceptor.java:103) 
        ... 53 more 
Caused by: java.lang.reflect.InvocationTargetException 
        at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        at java.lang.reflect.Method.invoke(Method.java:498) 
        at org.apache.jackrabbit.core.util.db.ResultSetWrapper.invoke(ResultSetWrapper.java:66) 
        ... 100 more 
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 55) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197) 
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:4762) 
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1682) 
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:955) 
        at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:169) 
        at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:169) 
        ... 104 more 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)