XA Connections Are Kept Throughout the Global Transaction
(Doc ID 2236077.1)
Last updated on AUGUST 23, 2023
Applies to:Oracle WebLogic Server - Version 10.3.6 to 188.8.131.52.0
Information in this document applies to any platform.
In distributed transactions that span multiple domains, and uses multiple resources in those domains with those resources being XA database connections from Oracle data sources.
Those resources are kept from the first time they're used in the distributed transaction until the global transaction completes, instead of being suspended/ended and resumed/joined per request.
This means that if/when a connection pool is exhausted, the thread waits on the connection pool until a connection is available or a timeout occurs.
The order of resource allocations differ between different transactions,which means that request (1) may wait for a connection from pool (A) while holding a connection from pool (B) while another request (2) may wait for a connection from pool (B) while holding a connection from pool (A).
This causes a resource deadlock until either (or both) transactions timeout. This may cause a lot of delays in the transaction processing, and sometimes completely halt processing for extended periods.
If the connection is terminated, they'll need to reacquire it anyway. If that happens when they're about to rollback and they're stuck behind other waiters, the rollback may be delayed by a long time while keeping database locks, which turns the resource deadlock into a database deadlock as well.
This in turn may cause latch limitations in the database to terminating other connections, thus increasing the probability that a transaction won't have an active connection when rolling back.
While the workaround was applied:
To view full details, sign in with your My Oracle Support account.
Don't have a My Oracle Support account? Click to get started!
In this Document