You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kathey Marsden (JIRA)" <ji...@apache.org> on 2010/07/03 01:51:50 UTC

[jira] Issue Comment Edited: (DERBY-4731) XA two phase commit with active GLOBAL TEMPORARY TABLE causes An internal error identified by RawStore module

    [ https://issues.apache.org/jira/browse/DERBY-4731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12884848#action_12884848 ] 

Kathey Marsden edited comment on DERBY-4731 at 7/2/10 7:49 PM:
---------------------------------------------------------------

Attaching perhaps another manifestation of the issue which gives an assert on the prepare.  The only difference  that there the Assert case does not do logged work (creating a table) in the the transaction.  This one also requires the utilXid class.

 java ReproXATempTableAssert
ot 1rows from session.t1 before commit
Exception in thread "main" org.apache.derby.shared.common.sanity.AssertFailure:
ASSERT FAILED real connection should have been idle at this point
       at org.apache.derby.shared.common.sanity.SanityManager.ASSERT(SanityMana
er.java:120)
       at org.apache.derby.jdbc.EmbedXAResource.prepare(EmbedXAResource.java:29
)
       at ReproXATempTableAssert.tempTableInXA(ReproXATEmpTableAssert.java:54)
       at ReproXATempTableAssert.main(ReproXATEmpTableAssert.java:14)
--------------
tack traces for all live threads:
[snip thread dump]


I will add the two test cases as Junit fixtures to XATest but not enable them for now.


      was (Author: kmarsden):
    Attaching perhaps another manifestation of the issue which gives an assert on the prepare.  The only difference I think is that there is a normal xa transaction before the one that uses the temp table.  This one also requires the utilXid class.

 java ReproXATempTableAssert
ot 1rows from session.t1 before commit
Exception in thread "main" org.apache.derby.shared.common.sanity.AssertFailure:
ASSERT FAILED real connection should have been idle at this point
       at org.apache.derby.shared.common.sanity.SanityManager.ASSERT(SanityMana
er.java:120)
       at org.apache.derby.jdbc.EmbedXAResource.prepare(EmbedXAResource.java:29
)
       at ReproXATempTableAssert.tempTableInXA(ReproXATEmpTableAssert.java:54)
       at ReproXATempTableAssert.main(ReproXATEmpTableAssert.java:14)
--------------
tack traces for all live threads:
[snip thread dump]


I will add the two test cases as Junit fixtures to XATest but not enable them for now.

  
> XA two phase commit with active  GLOBAL TEMPORARY TABLE causes  An internal error identified by RawStore module
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4731
>                 URL: https://issues.apache.org/jira/browse/DERBY-4731
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.3.3.0, 10.4.2.0, 10.5.3.0, 10.6.1.0, 10.7.0.0
>            Reporter: Kathey Marsden
>            Assignee: Mike Matrigali
>         Attachments: ReproXATempTable.java, ReproXATempTableAssert.java, utilXid.java
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.