[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