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)

Reply via email to