[jbossts-issues] [JBoss JIRA] Commented: (JBTM-516) Transaction Reaper reaps atomic JTS transactions that have already started 2PC

Andrew Dinn (JIRA) jira-events at lists.jboss.org
Thu Mar 26 10:23:22 EDT 2009


    [ https://jira.jboss.org/jira/browse/JBTM-516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12459208#action_12459208 ] 

Andrew Dinn commented on JBTM-516:
----------------------------------

Hmm, this is interesting. The first message (_18) is printed when the reaper moves the TX from the reaper queue to the  work queue. The reaper worker  thread picks the TX out of the work queue and calls TX.cancel() . If this fails it prints the second message (_8). After that fails it goes on to call TX.preventCommit(). But . . .

The worker thread only calls cancel() if TX.running() returns TRUE. This is probably where either

i) the TX code needs to be changed so that running() should only return true when the TX is ACTIVE or
ii) the reaper code needs to be changed so that it calls something like isActive() rather than running()


> Transaction Reaper reaps atomic JTS transactions that have already started 2PC
> ------------------------------------------------------------------------------
>
>                 Key: JBTM-516
>                 URL: https://jira.jboss.org/jira/browse/JBTM-516
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: JTS Implementation
>    Affects Versions: 4.6
>            Reporter: Michael Musgrove
>            Assignee: Michael Musgrove
>             Fix For: 4.7
>
>
> Start a JTS AtomicTransaction from a remote client with a timeout. During commit if a ResourceManager takes longer than the timeout period to respond then the TransactionReaper attempts a rollback even though 2PC has already started. The problem is in ArjunaTransactionImple::rollback_only (perhaps the determineStatus() check needs to compare against Status.StatusActive instead of StatusPrepared).
> The TM prints out the following warning:
> 2009-03-26 13:09:31,181 [Thread-8] WARN  com.arjuna.ats.arjuna.logging.arjLoggerI18N - [com.arjuna.ats.arjuna.coordinator.TransactionReaper_18] - TransactionReaper::check timeout for TX -53ef7d76:dd94:49cb7e7f:3 in state  RUN
> 2009-03-26 13:09:31,181 [Thread-9] WARN  com.arjuna.ats.arjuna.logging.arjLoggerI18N - [com.arjuna.ats.arjuna.coordinator.TransactionReaper_8] - TransactionReaper::doCancellations worker Thread[Thread-9,10,main] failed to cancel TX -53ef7d76:dd94:49cb7e7f:3 -- rescheduling for mark-as-rollback
> 2009-03-26 13:09:31,182 [Thread-9] WARN  com.arjuna.ats.jts.logging.loggerI18N - [com.arjuna.ats.internal.jts.cwcommit] Failed to mark transaction as rollback only:
> org.omg.CORBA.INVALID_TRANSACTION:   vmcid: 0x4000  minor code: 3617  completed: No
>         at com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple.rollback_only(ArjunaTransactionImple.java:1159)
>         at com.arjuna.ats.internal.jts.ControlWrapper.rollback_only(ControlWrapper.java:334)
>         at com.arjuna.ats.internal.jts.ControlWrapper.preventCommit(ControlWrapper.java:172)
>         at com.arjuna.ats.arjuna.coordinator.TransactionReaper.doCancellations(TransactionReaper.java:691)
>         at com.arjuna.ats.internal.arjuna.coordinator.ReaperWorkerThread.run(ReaperWorkerThread.java:91)
> 2009-03-26 13:09:31,184 [Thread-9] WARN  com.arjuna.ats.arjuna.logging.arjLoggerI18N - [com.arjuna.ats.arjuna.coordinator.TransactionReaper_15] - TransactionReaper::doCancellations worker Thread[Thread-9,10,main] failed to mark TX -53ef7d76:dd94:49cb7e7f:3  as rollback only

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbossts-issues mailing list