Index: transaction/jts/src/main/java/com/sun/jts/CosTransactions/TopCoordinator.java =================================================================== --- transaction/jts/src/main/java/com/sun/jts/CosTransactions/TopCoordinator.java (revision 35309) +++ transaction/jts/src/main/java/com/sun/jts/CosTransactions/TopCoordinator.java (working copy) @@ -2118,6 +2143,7 @@ // ADDED(Ram J) percolate any system exception // back to the caller. if (exc instanceof INTERNAL) { + tranState.releaseLock(); throw (INTERNAL) exc; } } @@ -2304,6 +2330,7 @@ // ADDED (Ram J) percolate up any system exception. if (exc instanceof INTERNAL) { + tranState.releaseLock(); throw (INTERNAL) exc; } } @@ -2995,6 +3022,7 @@ // tried to set the state to COP_RB twice // in a row which is an error. } else if (exc instanceof INTERNAL) { + tranState.releaseLock(); // ADDED (Ram J) percolate up any system exception. throw (INTERNAL) exc; } // end else if cascade on the exception types Index: transaction/jts/src/main/java/com/sun/jts/CosTransactions/TransactionState.java =================================================================== --- transaction/jts/src/main/java/com/sun/jts/CosTransactions/TransactionState.java (revision 35309) +++ transaction/jts/src/main/java/com/sun/jts/CosTransactions/TransactionState.java (working copy) @@ -898,4 +898,8 @@ return result; } + + void releaseLock() { + freezeLock.releaseReadLock(); + } }