Transaction Exception at DB is not returned to WebLogic Server when using non-XA LLR
Last updated on NOVEMBER 05, 2016
Applies to:Oracle Weblogic Server - Version 10.3 to 10.3.5
JDBC - Version 188.8.131.52 to 184.108.40.206.0 [Release 11.1 to 11.2]
Information in this document applies to any platform.
In WebLogic Server, if non-XA - Logging Last Resource (LLR) data source is used in a transaction and the transaction is not committed at the DB, then the failure is never returned back to WebLogic Server.
For example, consider the following scenario. At the DB end, if there is a Materialized view configured on a table with a refresh on commit, which has a constraint attached to it. (More information about Materialized View and configuring Refresh on commit is given in the Oracle Documentation at http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6002.htm.)
Now consider that WLS is inserting a row in the table as part of a transaction. If the insert operation violates the constraint configured at the DB, then the data won't be updated in the DB. Also, there won't be any exception received in Weblogic Server. Ideally, it should receive an exception that the data is not committed and rollback should be initiated. But since it hasn't received any exception, WLS continues its operation and further commits the transaction.
In the case using XA Driver, it throws an RMFAIL Exception during the commit call but WLS marks the transaction as UNKNOWN instead of rollback. This issue when using the XA Data source has been resolved in <Bug 12957449> (fixed in 10.3.6).
Log Snippet when using XA Driver
Sign In with your My Oracle Support account
Don't have a My Oracle Support account? Click to get started
My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms