My Oracle Support Banner

WebLogic Server XA JTA : Synched Transactions Make a JMS Message Available (Randomly) Before DB Updates are Visible, is it Expected ? (Doc ID 2375620.1)

Last updated on DECEMBER 16, 2023

Applies to:

Oracle WebLogic Server - Version 12.1.2.0.0 and later
Information in this document applies to any platform.

Goal

Weblogic XA/JTA Driver.
JTA transactions and the two phase commit protocol are not consistently assuring visibility of changes in database when synchronous.

Provided that "Producer-Transaction" (PT) is committed, sometimes a subsequent call to JMS "Consumer-Transaction" is not able to see the database changes which were committed in the PT transaction.

A system is hitting above problem explained in a article in the internet.
 


Question:
1. Is this Expected?


More details about one scenario when issue reproduced. Behavior was random and affected a low percentage of transaction (but integrity compromised)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
There is serial process where Process1.TX2 running after Process1.TX1 is not ensured to see the changes done by Process1.TX1.

What it is seen in local system tests the following.
TIME INTERVAL 1: AssignmentSelectionMdb.TRANSACTION 2 start()
--- (a) select count(*) FROM TransportOrder WHERE importantTable.Fields = our predicate Returns ZERO.
  Meaning transaction 1 starts and sees that no records exist matching some business criteria.

---- (b) Transaction creates a TransportOrder Entity that matches the business criteria of query in step (a)
---- (c) Transaction also publishes a message to some irrelevant queue in the case of this description
---- (d) transaction finish

TIME INTERVAL 2: AssignmentSelectionMdb.TRANSACTION 2 start():
--- (a) Select query like above ---- should have comes with no TransportOrders returned.
---- (b) we have problem because in fact an entity was created during TIME INTERVAL 1 and the transaction did not break, but the new db entity added to db table is not yet visible
Weblogic in our system test case, commits the JTA transaction namely the XA JMS Resource and the XA Database DataSource.
No exception is thrown.

Solution

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
Goal
Solution


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.