[ 
https://issues.apache.org/jira/browse/AMQ-2191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15029848#comment-15029848
 ] 

Gary Tully commented on AMQ-2191:
---------------------------------

rework of this issue to make interruption of an inprogress request an error and 
allowing pending interrupts to be ignored for subsequent requests avoids the 
need to wrap close at a higher level. AMQ-3547

> Incorrect handling of interruptions during commit or rollback of a transaction
> ------------------------------------------------------------------------------
>
>                 Key: AMQ-2191
>                 URL: https://issues.apache.org/jira/browse/AMQ-2191
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.3.0
>         Environment: Java 1.6.0_02
> Kubuntu Linux  2.6.24-22
> Bitronix Transaction Manager 1.3.2
>            Reporter: Michael Gottschalk
>            Assignee: Gary Tully
>             Fix For: 5.3.1, 5.4.0
>
>         Attachments: ACTIVEMQ-PATCH, activemq_interruption_fix.diff, 
> xa-jms-exception.txt
>
>
> We have a process framework that sends interruptions to threads that should 
> be stopped or paused. Some of these threads interact with ActiveMQ, so 
> interruptions can occur inside ActiveMQ at different points.
> A problem occurs if the interruption is detected in 
> ActiveMQConnection.syncSendPacket during commit or rollback of a transaction. 
> ActiveMQ then throws a JMSException so that it appears to Bitronix as if the 
> XA transaction is in an inconsistent state (see stacktrace in the attached 
> file).
> In our opinion, the interruption should be ignored by ActiveMQ during the 
> critical commit or rollback phase. It is not mandatory that an interruption 
> has an immediate effect. Especially such a non-interruptable step as rollback 
> or commit should be performed even though an interruption occurs.
> I created a patch for the class TransactionContext which, in case of an 
> interruption, resets the interruption state of the thread, retries the 
> syncSendPacket method call and restores the thread's interruption state 
> afterwards. In this manner, no inconsistent state exceptions occur in the 
> transaction manager any longer and interruption is deferred until the 
> commit/rollback has succeeded.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to