[jboss-svn-commits] JBL Code SVN: r35529 - in labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery: coordinator/ba and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 15 05:09:39 EDT 2010


Author: adinn
Date: 2010-10-15 05:09:38 -0400 (Fri, 15 Oct 2010)
New Revision: 35529

Modified:
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/at/ATCoordinatorRecoveryModule.java
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/ba/BACoordinatorRecoveryModule.java
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/ATParticipantRecoveryModule.java
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/XTSATRecoveryManagerImple.java
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/BAParticipantRecoveryModule.java
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/XTSBARecoveryManagerImple.java
Log:
corrected recovery module startup so that recovery manager is created as needed by either coordinator or participant code -- fixes JBTM-800

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/at/ATCoordinatorRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/at/ATCoordinatorRecoveryModule.java	2010-10-15 09:03:57 UTC (rev 35528)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/at/ATCoordinatorRecoveryModule.java	2010-10-15 09:09:38 UTC (rev 35529)
@@ -35,6 +35,7 @@
 import com.arjuna.ats.internal.arjuna.common.UidHelper;
 
 import com.arjuna.mwlabs.wscf.model.twophase.arjunacore.ATCoordinator;
+import org.jboss.jbossts.xts.recovery.participant.at.XTSATRecoveryManagerImple;
 
 import java.util.Vector;
 import java.util.Enumeration;
@@ -69,6 +70,15 @@
      */
     public void install()
     {
+        // the manager is needed by both the participant or the coordinator recovery modules so whichever
+        // one gets there first creates it. No synchronization is needed as modules are only ever
+        // installed in a single thread
+        XTSATRecoveryManager atRecoveryManager = XTSATRecoveryManager.getRecoveryManager();
+        if (atRecoveryManager == null) {
+            atRecoveryManager = new XTSATRecoveryManagerImple(_recoveryStore);
+            XTSATRecoveryManager.setRecoveryManager(atRecoveryManager);
+        }
+        
         Implementations.install();
     }
 

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/ba/BACoordinatorRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/ba/BACoordinatorRecoveryModule.java	2010-10-15 09:03:57 UTC (rev 35528)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/coordinator/ba/BACoordinatorRecoveryModule.java	2010-10-15 09:09:38 UTC (rev 35529)
@@ -35,6 +35,7 @@
 import com.arjuna.ats.internal.arjuna.common.UidHelper;
 
 import com.arjuna.mwlabs.wscf.model.sagas.arjunacore.BACoordinator;
+import org.jboss.jbossts.xts.recovery.participant.ba.XTSBARecoveryManagerImple;
 
 import java.util.Vector;
 import java.util.Enumeration;
@@ -69,6 +70,15 @@
      */
     public void install()
     {
+        // the manager is needed by both the participant or the coordinator recovery modules so whichever
+        // one gets there first creates it. No synchronization is needed as modules are only ever
+        // installed in a single thread
+        XTSBARecoveryManager baRecoveryManager = XTSBARecoveryManager.getRecoveryManager();
+        if (baRecoveryManager == null) {
+            baRecoveryManager = new XTSBARecoveryManagerImple(_recoveryStore);
+            XTSBARecoveryManager.setRecoveryManager(baRecoveryManager);
+        }
+        
         Implementations.install();
     }
 

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/ATParticipantRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/ATParticipantRecoveryModule.java	2010-10-15 09:03:57 UTC (rev 35528)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/ATParticipantRecoveryModule.java	2010-10-15 09:09:38 UTC (rev 35529)
@@ -67,12 +67,20 @@
      */
     public void install()
     {
-        XTSATRecoveryManager.setRecoveryManager(new XTSATRecoveryManagerImple(_recoveryStore));
+        // the manager is needed by both the participant or the coordinator recovery modules so whichever
+        // one gets there first creates it. No synchronization is needed as modules are only ever
+        // installed in a single thread
+        XTSATRecoveryManager atRecoveryManager = XTSATRecoveryManager.getRecoveryManager();
+        if (atRecoveryManager == null) {
+            atRecoveryManager = new XTSATRecoveryManagerImple(_recoveryStore);
+            XTSATRecoveryManager.setRecoveryManager(atRecoveryManager);
+        }
         // Subordinate Coordinators register durable participants with their parent transaction so
         // we need to add an XTSATRecoveryModule which knows about the registered participants
 
         subordinateRecoveryModule = new XTSATSubordinateRecoveryModule();
-         XTSATRecoveryManager.getRecoveryManager().registerRecoveryModule(subordinateRecoveryModule);
+        
+        atRecoveryManager.registerRecoveryModule(subordinateRecoveryModule);
     }
 
     /**

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/XTSATRecoveryManagerImple.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/XTSATRecoveryManagerImple.java	2010-10-15 09:03:57 UTC (rev 35528)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/at/XTSATRecoveryManagerImple.java	2010-10-15 09:09:38 UTC (rev 35529)
@@ -17,10 +17,10 @@
  */
 public class XTSATRecoveryManagerImple extends XTSATRecoveryManager {
     /**
-     * constructor for use by ATParticipantRecoveryModule
+     * constructor for use by ATParticipantRecoveryModule and ATCoordinatorRecoveryModule
      * @param txLog
      */
-    XTSATRecoveryManagerImple(TxLog txLog)
+    public XTSATRecoveryManagerImple(TxLog txLog)
     {
         this.txLog = txLog;
     }

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/BAParticipantRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/BAParticipantRecoveryModule.java	2010-10-15 09:03:57 UTC (rev 35528)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/BAParticipantRecoveryModule.java	2010-10-15 09:09:38 UTC (rev 35529)
@@ -67,12 +67,20 @@
      */
     public void install()
     {
-        XTSBARecoveryManager.setRecoveryManager(new XTSBARecoveryManagerImple(_recoveryStore));
+        // the manager is needed by both the participant or the coordinator recovery modules so whichever
+        // one gets there first creates it. No synchronization is needed as modules are only ever
+        // installed in a single thread
+        XTSBARecoveryManager baRecoveryManager = XTSBARecoveryManager.getRecoveryManager();
+        if (baRecoveryManager == null) {
+            baRecoveryManager = new XTSBARecoveryManagerImple(_recoveryStore);
+            XTSBARecoveryManager.setRecoveryManager(baRecoveryManager);
+        }
         // Subordinate Coordinators register durable participants with their parent transaction so
         // we need to add an XTSBARecoveryModule which knows about the registered participants
 
         subordinateRecoveryModule = new XTSBASubordinateRecoveryModule();
-         XTSBARecoveryManager.getRecoveryManager().registerRecoveryModule(subordinateRecoveryModule);
+
+        baRecoveryManager.registerRecoveryModule(subordinateRecoveryModule);
     }
 
     /**

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/XTSBARecoveryManagerImple.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/XTSBARecoveryManagerImple.java	2010-10-15 09:03:57 UTC (rev 35528)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/recovery/participant/ba/XTSBARecoveryManagerImple.java	2010-10-15 09:09:38 UTC (rev 35529)
@@ -17,10 +17,10 @@
  */
 public class XTSBARecoveryManagerImple extends XTSBARecoveryManager {
     /**
-     * constructor for use by BAParticipantRecoveryModule
+     * constructor for use by BAParticipantRecoveryModule and BACoordinatorRecoveryModule
      * @param txLog
      */
-    XTSBARecoveryManagerImple(TxLog txLog)
+    public XTSBARecoveryManagerImple(TxLog txLog)
     {
         this.txLog = txLog;
     }



More information about the jboss-svn-commits mailing list