[ 
https://issues.apache.org/jira/browse/DERBY-5562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Brett Bergquist updated DERBY-5562:
-----------------------------------

    Attachment: DERBY-5562.patch

A patch to fix this problem.   This calls XATransactionState.xa_finalize() to 
release the timer because no call to rollback or commit is going to come for a 
read-only transaction.
                
> An read-only XA transaction that has a timeout never has the timer canceled 
> when the transaction is complete
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5562
>                 URL: https://issues.apache.org/jira/browse/DERBY-5562
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions: 10.8.2.2
>         Environment: Solaris 10
> Glassfish V2.1.1
>            Reporter: Brett Bergquist
>         Attachments: DERBY-5562.patch
>
>
> From the EmbedConnection.java comment for "xa_prepare".
>                                       // On a prepare call, xa allows an 
> optimization that if the
>                                       // transaction is read only, the RM can 
> just go ahead and
>                                       // commit it.  So if store returns this 
> read only status -
>                                       // meaning store has taken the liberty 
> to commit already - we
>                                       // needs to turn around and call 
> internalCommit (without
>                                       // committing the store again) to make 
> sure the state is
>                                       // consistent.  Since the transaction 
> is read only, there is
>                                       // probably not much that needs to be 
> done.
> When XATransactionController.XA_RDONLY is returned, no "commit" or "rollback" 
> will be received.  If a XA transaction timer was started (could be through 
> the derby.jdbc.xaTransactionTimeout=xxx for example), then these transactions 
> will not have their timer canceled and will later attempt to cancel the 
> transaction and fail as the transaction no longer exists.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to