Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-3379

XA concurrent transactions - NullPointerException

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.4.2, 2.5
    • 2.2.13, 2.4.3, 2.5.1
    • 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

      Attachments

        1. JCR-3379.patch
          8 kB
          Claus Köll

        Activity

          People

            c_koell Claus Köll
            linuxroot Stanislav Dvorscak
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: