[ 
https://issues.apache.org/jira/browse/DERBY-2508?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12493367
 ] 

Julius Stroffek commented on DERBY-2508:
----------------------------------------

Dan, I am sorry, I forgot to explain that. I was also not able to find anything 
in JDBC/JTA spec except a small piece in XAResource.get/setTransactionTimeout 
javadoc.
---

The xa transaction timeout can by set up by calling 
XAResource.setTransactionTimeout, if the value 0 is specified (or the 
setTransactionTimout function was not called for the XAResource instance) the 
value of transaction timeout is the database default.

The database default value of xa transaction timeout can be specified in 
derby.jdbc.xaTransactionTimeout system property. The value of timeout is in 
seconds and if it is equal to 0 the transaction timeout feature is disabled.The 
default value of default xa transaction timeout is currently 300 seconds. I 
think that this might/should be changed to 0 because this would be consistent 
with a previous behavior (no xa transaction timeout).

The timeout is measured since the application calls the XAResource.start method 
until XAResource.commit/rollback is called. It does not matter whether the 
transaction is later associated or not associated with any XAResource.

Once a transaction is rolled back due to timing out all the knowledge of the 
global transaction is discarded. If it was associated with some XAResource 
instance, it would be disassociated. If there was a running statement it would 
be canceled and the exception (SQLState.LANG_STATEMENT_CANCELLED_OR_TIMED_OUT) 
would be thrown to the application.

An option would be to roll back the transaction when it times out and remember 
that transaction for a while and throw the timeout related exceptions to the 
client and do the final cleanup after some time. This might help when 
identifying a timeout related issues on a client.

Please, feel free to give any comments or suggestions to the behavior or 
implementation.


> Implement the XA transaction timeout support for embedded driver.
> -----------------------------------------------------------------
>
>                 Key: DERBY-2508
>                 URL: https://issues.apache.org/jira/browse/DERBY-2508
>             Project: Derby
>          Issue Type: Sub-task
>    Affects Versions: 10.2.2.0
>            Reporter: Julius Stroffek
>         Assigned To: Julius Stroffek
>             Fix For: 10.3.0.0
>
>         Attachments: d2432_beta1.diff, d2432_beta1.stat, d2508.diff, 
> d2508.stat
>
>
> Implement the XA transaction support for embedded driver in EmbedXAResource.
> Implement functions XAResource.setTransactionTimeout and 
> XAResource.getTransactionTimeout and add the code to cancel the transaction 
> after the specified period of time.

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