[jboss-svn-commits] JBL Code SVN: r34866 - in labs/jbosstm/trunk: ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 24 08:51:23 EDT 2010


Author: jhalliday
Date: 2010-08-24 08:51:23 -0400 (Tue, 24 Aug 2010)
New Revision: 34866

Modified:
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java
Log:
Changes to support future addition of HornetQ journal ObjectStore. JBTM-782


Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -35,7 +35,7 @@
 @PropertyPrefix(prefix = "com.arjuna.ats.arjuna.coordinator.")
 public class CoordinatorEnvironmentBean implements CoordinatorEnvironmentBeanMBean
 {
-    private volatile String actionStore = HashedActionStore.class.getName();    
+    private volatile String actionStore = HashedActionStore.class.getName();
     private volatile boolean asyncCommit = false;
     private volatile boolean asyncPrepare = false;
     private volatile boolean asyncRollback = false;
@@ -73,6 +73,8 @@
 
     private volatile boolean alternativeRecordOrdering = false;
 
+    private volatile String communicationStore = HashedActionStore.class.getName();
+
     /**
      * Returns the symbolic name for the action store type.
      *
@@ -670,4 +672,26 @@
     {
         this.alternativeRecordOrdering = alternativeRecordOrdering;
     }
+
+    /**
+     * Returns the symbolic name for the communication store type.
+     *
+     * Default: "HashedActionStore"
+     *
+     * @return the communication store name.
+     */
+    public String getCommunicationStore()
+    {
+        return communicationStore;
+    }
+
+    /**
+     * Sets the symbolic name of the communication store.
+     *
+     * @param communicationStore the communication store name.
+     */
+    public void setCommunicationStore(String communicationStore)
+    {
+        this.communicationStore = communicationStore;
+    }
 }

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBeanMBean.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -72,4 +72,6 @@
     boolean isBeforeCompletionWhenRollbackOnly();
 
     String getCheckedActionFactoryClassName();
+
+    String getCommunicationStore();
 }

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/BaseStore.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -56,5 +56,9 @@
      */
 
     public String getStoreName ();
+
+    public void start();
+
+    public void stop();
 }
 

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStore.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -59,6 +59,12 @@
 
 public abstract class ObjectStore implements ObjectStoreAPI
 {
+    @Override
+    public void start() {}
+
+    @Override
+    public void stop() {}
+
     public boolean allObjUids (String s, InputObjectState buff) throws ObjectStoreException
     {
         return allObjUids(s, buff, StateStatus.OS_UNKNOWN);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/StoreManager.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -34,17 +34,31 @@
 {
     private static ObjectStoreAPI actionStore = null; // for BasicAction i.e. tx logging / recovery
     private static ObjectStoreAPI stateStore = null; // for StateManager i.e. txoj object type store.
+    private static ObjectStoreAPI communicationStore = null; // for IPC e.g. JacOrbRCServiceInit, TransactionStatusManagerItem
 
-    public StoreManager(ObjectStoreAPI actionStore, ObjectStoreAPI stateStore) {
+    public StoreManager(ObjectStoreAPI actionStore, ObjectStoreAPI stateStore, ObjectStoreAPI communicationStore) {
 
-        if(StoreManager.actionStore != null || StoreManager.stateStore != null) {
+        if(StoreManager.actionStore != null || StoreManager.stateStore != null || StoreManager.communicationStore != null) {
             throw new IllegalStateException("store already initialized!");
         }
 
         StoreManager.actionStore = actionStore;
         StoreManager.stateStore = stateStore;
+        StoreManager.communicationStore = communicationStore;
     }
 
+    public static final void shutdown() {
+        if(actionStore != null) {
+            actionStore.stop();
+        }
+        if(stateStore != null) {
+            stateStore.stop();
+        }
+        if(communicationStore != null) {
+            communicationStore.stop();
+        }
+    }
+
     public static final RecoveryStore getRecoveryStore ()
     {
         return getActionStore();
@@ -58,6 +72,41 @@
         return getActionStore();
     }
 
+    public static final ParticipantStore getCommunicationStore() {
+        return getCommunicationStoreInternal();
+    }
+
+    private static final ObjectStoreAPI getCommunicationStoreInternal()
+    {
+        if(communicationStore != null) {
+            return communicationStore;
+        }
+
+        synchronized(StoreManager.class) {
+
+            if(communicationStore != null) {
+                return communicationStore;
+            }
+
+            String communicationStoreType = arjPropertyManager.getCoordinatorEnvironmentBean().getCommunicationStore();
+
+            try
+            {
+                Class osc = Class.forName(communicationStoreType);
+
+                communicationStore = (ObjectStoreAPI) osc.newInstance();
+            }
+            catch (final Throwable ex)
+            {
+                throw new FatalError(tsLogger.i18NLogger.get_StoreManager_invalidtype() + " " + communicationStoreType, ex);
+            }
+
+            communicationStore.start();
+        }
+
+        return communicationStore;
+    }
+
     /**
      * @return the <code>ObjectStore</code> implementation which the
      *         transaction coordinator will use.
@@ -105,6 +154,8 @@
             {
                 throw new FatalError(tsLogger.i18NLogger.get_StoreManager_invalidtype() + " " + actionStoreType, ex);
             }
+
+            actionStore.start();
         }
 
         return actionStore;
@@ -147,6 +198,7 @@
                 throw new FatalError(tsLogger.i18NLogger.get_StoreManager_invalidtype() + " " + storeType, ex);
             }
 
+            stateStore.start();
         }
         return stateStore;
     }

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/TransactionStatusManagerItem.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -37,7 +37,7 @@
 
 import com.arjuna.ats.arjuna.common.Uid ;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreException ;
-import com.arjuna.ats.arjuna.objectstore.RecoveryStore;
+import com.arjuna.ats.arjuna.objectstore.ParticipantStore;
 import com.arjuna.ats.arjuna.objectstore.StoreManager;
 import com.arjuna.ats.arjuna.state.InputObjectState ;
 import com.arjuna.ats.arjuna.state.OutputObjectState ;
@@ -81,9 +81,9 @@
     /**
      * Get a reference to the Object Store.
      */
-    private static RecoveryStore getStore()
+    private static ParticipantStore getStore()
     {
-        return StoreManager.getRecoveryStore();
+        return StoreManager.getCommunicationStore();
     }
     
     /**

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java	2010-08-24 12:06:52 UTC (rev 34865)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java	2010-08-24 12:51:23 UTC (rev 34866)
@@ -35,6 +35,7 @@
 import com.arjuna.ats.arjuna.common.*;
 import com.arjuna.ats.arjuna.objectstore.ParticipantStore;
 import com.arjuna.ats.arjuna.objectstore.StoreManager;
+import com.arjuna.ats.arjuna.objectstore.TxLog;
 import com.arjuna.ats.internal.jts.recovery.recoverycoordinators.*;
 
 import com.arjuna.ats.jts.logging.*;
@@ -248,14 +249,11 @@
 
                 try
                     {
-                        if (participantStore == null)
-                        {
-                            participantStore = StoreManager.getParticipantStore();
-                        }
-
                         OutputObjectState oState = new OutputObjectState();
                         oState.packString(reference);
-                        participantStore.write_committed( new Uid(uid4Recovery), type(), oState);
+
+                        TxLog txLog = StoreManager.getCommunicationStore();
+                        txLog.write_committed( new Uid(uid4Recovery), type(), oState);
                     }
                 catch ( java.lang.SecurityException sex )
                 {
@@ -305,8 +303,6 @@
     private static final String orbNamePrefix = "ots_";
     private static final String orbName = "arjuna.portable_interceptor.";
 
-    private ParticipantStore participantStore;
-
     static protected String uid4Recovery = "0:ffff52e38d0c:c91:4140398c:0";
 
 }
\ No newline at end of file



More information about the jboss-svn-commits mailing list