You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Unico Hommes (JIRA)" <ji...@apache.org> on 2012/09/27 12:20:08 UTC

[jira] [Commented] (JCR-3379) XA concurrent transactions - NullPointerException

    [ https://issues.apache.org/jira/browse/JCR-3379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13464603#comment-13464603 ] 

Unico Hommes commented on JCR-3379:
-----------------------------------

Backported to the 2.2 branch in revision 1390928.
                
> 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, transactions, versioning
>    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
>            Assignee: Claus Köll
>             Fix For: 2.4.3, 2.5.1
>
>         Attachments: JCR-3379.patch
>
>
> 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
For more information on JIRA, see: http://www.atlassian.com/software/jira