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