Distributed transaction errors when using HA deployed application and clustered EDS

Solution Verified - Updated -

Environment

JBoss Enterprise Data Services (EDS) 5.2.0
JBoss Enterprise Data Services (EDS) 5.3.0

Issue

We are seeing errors thrown by Teiid from the underlying Oracle database when using multiple JBoss nodes running the same Teiid model. This does not occur when running a single instance of Teiid. The only change has been to the Teiid datasource that has been amended to include an alternate server.

  • SEVERE error printed, with a TX related problem due to a session ID being "null".
  • ERROR logged with the session ID being "null" as the root cause.
  • transaction-related errors due to missing session IDs.

Resolution

This is likely caused by an issues with premature session termination addressed by TEIID-2172 [1] which will manifest in a clustered, load-balanced configuration. This fix is included in EDS roll-up patch EDS_5.3_2_2012.

[1] https://issues.jboss.org/browse/TEIID-2172

Diagnostic Steps

  1. Start declarative XA-transaction in deployed EJB
  2. Get direct Oracle connection from pool and issue select statement (not through Teiid). Close connection once query completes.
  3. Get Teiid connection from pool and issue virtual procedure call to migrate one atomic piece of data. Close connection once query completes. This is where the exceptions occur.
  4. Get direct Oracle connection from pool and issue INSERT/UPDATE statements.
  5. Commit XA-transaction.

Both EDS and direct database calls work through the same datasource (myOracle-ds.xml).

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.