[ 
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.

Reply via email to