[
https://issues.apache.org/jira/browse/JCR-3379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13409333#comment-13409333
]
Claus Köll commented on JCR-3379:
---------------------------------
Hmm strange behaviour. Normally we do not enter is isSameGlobalTx() if
activeXid is null. I will have a look at it.
> XA concurrent transactions - NullPointerException
> -------------------------------------------------
>
> Key: JCR-3379
> URL: https://issues.apache.org/jira/browse/JCR-3379
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: jackrabbit-core
> Affects Versions: 2.4.2, 2.5
> Environment: java version "1.6.0_26"
> Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
> Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
> Linux dev 2.6.32-5-amd64 #1 SMP Thu Mar 22 17:26:33 UTC 2012 x86_64 GNU/Linux
> Reporter: Stanislav Dvorscak
>
> If several threads are working with XA transactions, the NullPointerException
> is randomly happened. After that each other transaction will deadlock on the
> Jackrabbit side, and the restart of the server is necessary.
> The exception is:
> Exception in thread "executor-13" java.lang.NullPointerException
> at
> org.apache.jackrabbit.core.version.VersioningLock$XidRWLock.isSameGlobalTx(VersioningLock.java:116)
> at
> org.apache.jackrabbit.core.version.VersioningLock$XidRWLock.allowReader(VersioningLock.java:126)
> at
> org.apache.jackrabbit.core.version.VersioningLock$XidRWLock.endWrite(VersioningLock.java:161)
> at
> EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock.release(Unknown
> Source)
> at
> org.apache.jackrabbit.core.version.VersioningLock$WriteLock.release(VersioningLock.java:76)
> at
> org.apache.jackrabbit.core.version.InternalXAVersionManager$2.internalReleaseWriteLock(InternalXAVersionManager.java:703)
> at
> org.apache.jackrabbit.core.version.InternalXAVersionManager$2.commit(InternalXAVersionManager.java:691)
> at
> org.apache.jackrabbit.core.TransactionContext.commit(TransactionContext.java:195)
> at
> org.apache.jackrabbit.core.XASessionImpl.commit(XASessionImpl.java:326)
> at
> org.apache.jackrabbit.rmi.server.ServerXASession.commit(ServerXASession.java:58)
> at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
> at sun.rmi.transport.Transport$1.run(Transport.java:159)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> at
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
> at
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
> at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
> at org.apache.jackrabbit.rmi.server.ServerXASession_Stub.commit(Unknown
> Source)
> at
> org.apache.jackrabbit.rmi.client.ClientXASession.commit(ClientXASession.java:74)
> at org.objectweb.jotm.SubCoordinator.doCommit(SubCoordinator.java:1123)
> at
> org.objectweb.jotm.SubCoordinator.commit_one_phase(SubCoordinator.java:483)
> at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:318)
> at org.objectweb.jotm.Current.commit(Current.java:452)
> at
> org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1010)
> at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
> at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
> at
> org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
> at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
> And the point of the other deadlocks is:
> Thread [executor-13] (Suspended)
> SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int)
> line: not available [native method]
> SocketInputStream.read(byte[], int, int) line: 129
> BufferedInputStream.fill() line: 218
> BufferedInputStream.read() line: 237
> DataInputStream.readByte() line: 248
> StreamRemoteCall.executeCall() line: 195
> UnicastRef.invoke(Remote, Method, Object[], long) line: 142
> ServerXASession_Stub.prepare(Xid) line: not available
> ClientXASession.prepare(Xid) line: 106
> SubCoordinator.doPrepare() line: 829
> SubCoordinator.commit_one_phase() line: 480
> TransactionImpl.commit() line: 318
> Current.commit() line: 452
> JtaTransactionManager.doCommit(DefaultTransactionStatus) line: 1010
>
> JtaTransactionManager(AbstractPlatformTransactionManager).processCommit(DefaultTransactionStatus)
> line: 754
>
> JtaTransactionManager(AbstractPlatformTransactionManager).commit(TransactionStatus)
> line: 723
>
> TransactionInterceptor(TransactionAspectSupport).commitTransactionAfterReturning(TransactionAspectSupport$TransactionInfo)
> line: 393
> TransactionInterceptor.invoke(MethodInvocation) line: 120
> ReflectiveMethodInvocation.proceed() line: 172
> JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 202
> $Proxy94.processProductDetail(String) line: not available
> ProcessProductDetailConsumer$1.run() line: 79
> ThreadPoolExecutor$Worker.runTask(Runnable) line: 886
> ThreadPoolExecutor$Worker.run() line: 908
> Thread.run() line: 680
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira