Bug 1871926 - [GSS](6.4.z) JBTM-3079 - InboundBridge recovery aborts live transactions
Summary: [GSS](6.4.z) JBTM-3079 - InboundBridge recovery aborts live transactions
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: JBoss Enterprise Application Platform 6
Classification: JBoss
Component: JCA
Version: 6.4.23
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: CR1
: EAP 6.4.24
Assignee: jboss-set
QA Contact: Peter Mackay
URL:
Whiteboard:
Depends On:
Blocks: eap6424-payload 1871928 1871932 1885629
TreeView+ depends on / blocked
 
Reported: 2020-08-24 15:46 UTC by Brad Maxwell
Modified: 2025-02-10 04:00 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-02-10 04:00:26 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker JBEAP-15945 0 Critical Verified [GSS](7.2.z) JBTM-3079 - InboundBridge recovery aborts live transactions 2020-11-23 13:48:30 UTC
Red Hat Issue Tracker JBEAP-16013 0 Critical Verified [GSS](7.1.z) InboundBridge recovery aborts live transactions 2020-11-23 13:48:30 UTC
Red Hat Issue Tracker JBTM-3079 0 Critical Closed InboundBridge recovery aborts live transactions 2020-11-23 13:48:30 UTC

Comment 1 Brad Maxwell 2020-08-24 15:46:34 UTC
During a recovery pass, the InboundBridgeRecoveryManager scans for subordinate XA branches that may need cleanup. The filtering process applied by checkXid correctly excludes tx that are not owned by the bridge, but fails to ignore those that are owned but also still live. Therefore, a race condition exists such that the recovery process may incorrectly abort a branch if invoked between the prepare and commit steps, resulting in data corruption relative to other committed branches from the parent i.e. Heuristic outcomes.

TRACE [org.jboss.jbossts.txbridge] (TaskWorker-3) BridgeDurableParticipant.prepare(Xid=< 131080, 35, 64, ... >)

TRACE [org.jboss.jbossts.txbridge] (Periodic Recovery) rolling back orphaned subordinate tx < 131080, 35, 64, ... >

ERROR [org.jboss.jbossts.txbridge] (TaskWorker-8) ARJUNA033004: commit on Xid=< 131080, 35, 64, ... > failed: javax.transaction.xa.XAException

It is necessary to enhance checkXid to validate against known live tx. The easiest way would seem to be to have the InboundBridgeManager singleton hold a lookup table of live tx, effectively a secondary index into its existing collection of InboundBridges, against which the recovery system can validate the in-doubt Xid.

Comment 6 Peter Mackay 2022-06-27 17:25:27 UTC
Verified with EAP 6.4.24.CP.CR1

Comment 9 Red Hat Bugzilla 2025-02-10 04:00:26 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.


Note You need to log in before you can comment on or make changes to this bug.