You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by modelrepository <mo...@126.com> on 2017/08/25 04:01:14 UTC

deadlock issue when using mssql2016

Hi, all 
   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 



--
View this message in context: http://jackrabbit.510166.n4.nabble.com/deadlock-issue-when-using-mssql2016-tp4667557.html
Sent from the Jackrabbit - Dev mailing list archive at Nabble.com.