Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-4731

XA two phase commit with active GLOBAL TEMPORARY TABLE causes An internal error identified by RawStore module

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.3.3.0, 10.4.2.0, 10.5.3.0, 10.6.1.0, 10.7.1.1
    • Component/s: JDBC
    • Labels:
      None
    • Issue & fix info:
      High Value Fix, Repro attached, Workaround attached
    • Bug behavior facts:
      Crash, Deviation from standard, Seen in production

      Description

      If an XA two phase commit is performed while an GLOBAL TEMPORARY TABLE is active, it will fail with:
      XAER_RMERR
      Exception in thread "main" javax.transaction.xa.XAException: An internal error w
      as identified by RawStore module.
      at org.apache.derby.jdbc.EmbedXAResource.wrapInXAException(EmbedXAResour
      ce.java:820)
      at org.apache.derby.jdbc.EmbedXAResource.commit(EmbedXAResource.java:143
      )
      at ReproXATempTable.tempTableInXA(ReproXATempTable.java:51)
      at ReproXATempTable.main(ReproXATempTable.java:14)
      Caused by: java.sql.SQLTransactionRollbackException: An internal error was ident
      ified by RawStore module.
      at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLE
      xceptionFactory40.java:88)
      at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:256)

      at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException
      (TransactionResourceImpl.java:391)
      at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Tr
      ansactionResourceImpl.java:346)
      at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConne
      ction.java:2269)
      at org.apache.derby.impl.jdbc.EmbedConnection.xa_commit(EmbedConnection.
      java:2924)
      at org.apache.derby.jdbc.XATransactionState.xa_commit(XATransactionState
      .java:339)
      at org.apache.derby.jdbc.EmbedXAResource.commit(EmbedXAResource.java:141
      )
      ... 2 more
      Caused by: java.sql.SQLException: An internal error was identified by RawStore m
      odule.
      at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExc
      eptionFactory.java:45)
      at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransport
      AcrossDRDA(SQLExceptionFactory40.java:119)
      at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLE
      xceptionFactory40.java:70)
      ... 9 more
      Caused by: ERROR 40XT0: An internal error was identified by RawStore module.
      at org.apache.derby.iapi.error.StandardException.newException(StandardEx
      ception.java:276)
      at org.apache.derby.impl.store.raw.xact.Xact.setActiveState(Xact.java:18
      09)
      at org.apache.derby.impl.store.raw.xact.Xact.addContainer(Xact.java:1357
      )
      at org.apache.derby.impl.store.access.heap.Heap.create(Heap.java:274)
      at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.creat
      eConglomerate(HeapConglomerateFactory.java:195)
      at org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(
      RAMTransaction.java:823)
      at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.clean
      upTempTableOnCommitOrRollback(GenericLanguageConnectionContext.java:1345)
      at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doCom
      mit(GenericLanguageConnectionContext.java:1263)
      at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.xaCom
      mit(GenericLanguageConnectionContext.java:1160)
      at org.apache.derby.impl.jdbc.EmbedConnection.xa_commit(EmbedConnection.
      java:2921)
      ... 4 more

      See attached program for reproduction.
      javac -g ReproXATempTable.java utilXid.java
      java ReproXATempTable

      To work around the issue, you can drop the temp table before ending the xa transaction.

        Attachments

        1. backport10_3.diff
          12 kB
          Mike Matrigali
        2. derby_4731_2.diff
          14 kB
          Mike Matrigali
        3. derby_4731_3.diff
          9 kB
          Mike Matrigali
        4. derby_4731.diff
          8 kB
          Mike Matrigali
        5. ReproXATempTable.java
          6 kB
          Kathey Marsden
        6. ReproXATempTableAssert.java
          6 kB
          Kathey Marsden
        7. utilXid.java
          1 kB
          Kathey Marsden

          Issue Links

            Activity

              People

              • Assignee:
                mikem Mike Matrigali
                Reporter:
                kmarsden Kathey Marsden
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: