Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.4.2, 2.5
-
None
-
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
Description
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