diff --git a/public/transactions/src/main/java/com/atomikos/icatch/imp/ActiveStateHandler.java b/public/transactions/src/main/java/com/atomikos/icatch/imp/ActiveStateHandler.java index 0afc18b4..328dfbbe 100644 --- a/public/transactions/src/main/java/com/atomikos/icatch/imp/ActiveStateHandler.java +++ b/public/transactions/src/main/java/com/atomikos/icatch/imp/ActiveStateHandler.java @@ -158,8 +158,13 @@ public void doRollback() count = participants.size (); result = new PrepareResult ( count ); Enumeration enumm = participants.elements (); + String rootId = getCoordinator().getRootId(); while ( enumm.hasMoreElements () ) { Participant p = (Participant) enumm.nextElement (); + + // Fix for recursive call to rootId + if (rootId != null && p.getURI() != null && p.getURI().endsWith(rootId)) + break; PrepareMessage pm = new PrepareMessage ( p, result ); if ( getCascadeList () != null && p.getURI () != null ) { //null for OTS Integer sibnum = (Integer) getCascadeList ().get ( p.getURI () );