0
votes

We have migrated an internal system from Weblogic to Websphere and it has been noticed that the weblogic implementation of the TransactionManager would flush the commands to the database immediately when commiting a nested transaction. In the other hand the implementation of websphere seems to wait the suspended transaction to finish to flush the nested ones.

Example:

Weblogic Implementation of TransactionManager
T1 begin
T1 suspended T1.1 begin
             T1.1 commit *T1.1 results visible in the DB
T1 resume
T1 commit *T1 results visible in the DB

Websphere Implementation of TransactionManager
T1 begin
T1 suspended T1.1 begin
             T1.1 commit 
T1 resume
T1 commit *T1.1 AND T1 results visible in the DB at this point.

Any thoughts are welcome.

PS: as far as our investigation has gone both are supposed to be working with transaction isolation level READ_COMMITED. The database is Oracle.

How are you suspending and resuming transactions? - Alasdair
I am not following your diagram. In simple term, Are you saying after migrated to Websphere your seeing different behaviour? What is the impact? I have worked with a J2EE application which supports WL, Websphere and JBoss and I didn't notice any issues. - Minh Kieu
Maybe you could explain a bit more about the APIs you're using to suspend the tran, and work with the DB (JPA, JDBC, etc). - Scott Kurz
@Alasdair Using suspend and resume methods from TransactionManager - Roger that
@MinhKieu The difference in the behaviour is when the changes done in a nested transaction are visible for other connections/transactions to read in the database, in weblogic when the nested transaction execute commit the changes are visible in the DB, in websphere just when the parent transaction commits. - Roger that