[jboss-cvs] JBoss Messaging SVN: r1894 - in trunk: src/etc/server/default/deploy src/main/org/jboss/messaging/core/plugin/postoffice src/main/org/jboss/messaging/core/plugin/postoffice/cluster tests/src/org/jboss/test/messaging/jms/clustering

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 4 20:40:28 EST 2007


Author: ovidiu.feodorov at jboss.com
Date: 2007-01-04 20:40:23 -0500 (Thu, 04 Jan 2007)
New Revision: 1894

Modified:
   trunk/src/etc/server/default/deploy/clustered-mysql-persistence-service.xml
   trunk/src/etc/server/default/deploy/clustered-postgresql-persistence-service.xml
   trunk/src/etc/server/default/deploy/mysql-persistence-service.xml
   trunk/src/main/org/jboss/messaging/core/plugin/postoffice/Binding.java
   trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultBinding.java
   trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultPostOffice.java
   trunk/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java
   trunk/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java
Log:
Modified JMS_POSTOFFICE schema (http://jira.jboss.org/jira/browse/JBMESSAGING-722)

This will cause test mass failure, unless we manually drop tables on the cruisecontrol machine.


Modified: trunk/src/etc/server/default/deploy/clustered-mysql-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/clustered-mysql-persistence-service.xml	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/etc/server/default/deploy/clustered-mysql-persistence-service.xml	2007-01-05 01:40:23 UTC (rev 1894)
@@ -70,10 +70,10 @@
       <attribute name="DataSource">java:/DefaultDS</attribute>
       <attribute name="CreateTablesOnStartup">true</attribute>
       <attribute name="SqlProperties"><![CDATA[
-CREATE_POSTOFFICE_TABLE=CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(1023), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER VARCHAR(1))
-INSERT_BINDING=INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER) VALUES (?, ?, ?, ?, ?, ?, ?)
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(1023), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER VARCHAR(1), FAILED_NODE_ID INTEGER)
+INSERT_BINDING=INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER, FAILED_NODE_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
 DELETE_BINDING=DELETE FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
-LOAD_BINDINGS=SELECT NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?
+LOAD_BINDINGS=SELECT NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER, FAILED_NODE_ID FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?
       ]]></attribute>
       <attribute name="GroupName">Queue</attribute>
       <attribute name="StateTimeout">5000</attribute>

Modified: trunk/src/etc/server/default/deploy/clustered-postgresql-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/clustered-postgresql-persistence-service.xml	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/etc/server/default/deploy/clustered-postgresql-persistence-service.xml	2007-01-05 01:40:23 UTC (rev 1894)
@@ -68,10 +68,10 @@
       <attribute name="DataSource">java:/DefaultDS</attribute>
       <attribute name="CreateTablesOnStartup">true</attribute>
       <attribute name="SqlProperties"><![CDATA[
-CREATE_POSTOFFICE_TABLE=CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(1023), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER CHAR(1))
-INSERT_BINDING=INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER) VALUES (?, ?, ?, ?, ?, ?, ?)
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(1023), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER CHAR(1), FAILED_NODE_ID INTEGER)
+INSERT_BINDING=INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER, FAILED_NODE_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
 DELETE_BINDING=DELETE FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
-LOAD_BINDINGS=SELECT NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?
+LOAD_BINDINGS=SELECT NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER, FAILED_NODE_ID FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?
       ]]></attribute>
    </mbean>
 

Modified: trunk/src/etc/server/default/deploy/mysql-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/mysql-persistence-service.xml	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/etc/server/default/deploy/mysql-persistence-service.xml	2007-01-05 01:40:23 UTC (rev 1894)
@@ -70,10 +70,10 @@
       <attribute name="DataSource">java:/DefaultDS</attribute>
       <attribute name="CreateTablesOnStartup">true</attribute>
       <attribute name="SqlProperties"><![CDATA[
-CREATE_POSTOFFICE_TABLE=CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(1023), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER CHAR(1))
-INSERT_BINDING=INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER) VALUES (?, ?, ?, ?, ?, ?, ?)
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(1023), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER CHAR(1), FAILED_NODE_ID INTEGER)
+INSERT_BINDING=INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER, FAILED_NODE_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
 DELETE_BINDING=DELETE FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
-LOAD_BINDINGS=SELECT NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?
+LOAD_BINDINGS=SELECT NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, IS_FAILED_OVER, FAILED_NODE_ID FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?
       ]]></attribute>
    </mbean>
 

Modified: trunk/src/main/org/jboss/messaging/core/plugin/postoffice/Binding.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/postoffice/Binding.java	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/main/org/jboss/messaging/core/plugin/postoffice/Binding.java	2007-01-05 01:40:23 UTC (rev 1894)
@@ -28,6 +28,8 @@
  * A Binding
  *
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
+ *
  * @version <tt>$Revision: 1.1 $</tt>
  *
  * $Id$
@@ -35,14 +37,16 @@
  */
 public interface Binding
 {
-   public int getNodeID();
+   int getNodeID();
    
-   public Condition getCondition();
+   Condition getCondition();
    
-   public Queue getQueue();
+   Queue getQueue();
 
-   public boolean isFailed();
+   boolean isFailed();
 
-   public void setFailed(boolean failed);
+   void setFailed(boolean failed);
 
+   Integer getFailedNodeID();
+
 }

Modified: trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultBinding.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultBinding.java	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultBinding.java	2007-01-05 01:40:23 UTC (rev 1894)
@@ -23,12 +23,15 @@
 
 import org.jboss.messaging.core.Queue;
 import org.jboss.messaging.core.plugin.contract.Condition;
+import org.jboss.messaging.core.plugin.postoffice.cluster.FailedOverQueue;
 
 /**
  * 
  * A DefaultBinding
  *
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
+ *
  * @version <tt>$Revision: 1.1 $</tt>
  *
  * $Id$
@@ -36,11 +39,11 @@
  */
 public class DefaultBinding implements Binding
 {
-   // Constants -----------------------------------------------------
+   // Constants ------------------------------------------------------------------------------------
 
-   // Static --------------------------------------------------------
+   // Static ---------------------------------------------------------------------------------------
 
-   // Attributes ----------------------------------------------------
+   // Attributes -----------------------------------------------------------------------------------
 
    private int nodeID;
 
@@ -53,7 +56,7 @@
    // this only works if we keep DefautlBinding immutable
    private String toString;
 
-   // Constructors --------------------------------------------------
+   // Constructors ---------------------------------------------------------------------------------
 
    public DefaultBinding()
    {
@@ -67,7 +70,7 @@
       this.failed = failed;
    }
 
-   // Binding implementation ----------------------------------------
+   // Binding implementation -----------------------------------------------------------------------
 
    public int getNodeID()
    {
@@ -94,8 +97,17 @@
       this.failed = failed;
    }
 
-   // Public --------------------------------------------------------
+   public Integer getFailedNodeID()
+   {
+      if (queue instanceof FailedOverQueue)
+      {
+         return new Integer(((FailedOverQueue)queue).getFailedNodeID());
+      }
+      return null;
+   }
 
+   // Public ---------------------------------------------------------------------------------------
+
    public String toString()
    {
       if (toString == null)
@@ -118,13 +130,12 @@
       return toString;
    }
 
-   // Package protected ---------------------------------------------
+   // Package protected ----------------------------------------------------------------------------
 
-   // Protected -----------------------------------------------------
+   // Protected ------------------------------------------------------------------------------------
 
-   // Private -------------------------------------------------------
+   // Private --------------------------------------------------------------------------------------
 
-   // Inner classes -------------------------------------------------
+   // Inner classes --------------------------------------------------------------------------------
 
-
 }

Modified: trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultPostOffice.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultPostOffice.java	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/main/org/jboss/messaging/core/plugin/postoffice/DefaultPostOffice.java	2007-01-05 01:40:23 UTC (rev 1894)
@@ -484,13 +484,13 @@
          
          ps = conn.prepareStatement(getSQLStatement("LOAD_BINDINGS"));
                  
-         ps.setString(1, this.officeName);
+         ps.setString(1, officeName);
 
          rs = ps.executeQuery();
               
          while (rs.next())
          {
-            int nodeId = rs.getInt(1);
+            int nodeID = rs.getInt(1);
             String queueName = rs.getString(2);
             String conditionText = rs.getString(3);
             String selector = rs.getString(4);
@@ -500,18 +500,24 @@
                selector = null;
             }
             
-            long channelId = rs.getLong(5);
+            long channelID = rs.getLong(5);
             boolean failed = rs.getString(6).equals("Y");
 
-            log.info("PostOffice " + this.officeName + " nodeId=" +
-               nodeId + " condition=" + conditionText + " queueName=" +
-               queueName + " channelId=" + channelId + " selector=" + selector);
-                                             
+            Integer failedNodeID = null;
+            int i = rs.getInt(7);
+
+            if(!rs.wasNull())
+            {
+               failedNodeID = new Integer(i);
+            }
+
             Condition condition = conditionFactory.createCondition(conditionText);
+
+            Binding binding = createBinding(nodeID, condition, queueName, channelID,
+                                            selector, true, failed, failedNodeID);
+
+            log.debug(this + " loaded from database " + binding);
             
-            Binding binding =
-               createBinding(nodeId, condition, queueName, channelId, selector, true, failed);
-            
             binding.getQueue().deactivate();
             addBinding(binding);
          }
@@ -535,18 +541,25 @@
          wrap.end();
       }
    }
-   
+
+   /**
+    * @param failedNodeID - ignored for non-clustered bindings.
+    */
    protected Binding createBinding(int nodeID, Condition condition, String queueName,
-                                   long channelId, String filterString, boolean durable,
-                                   boolean failed) throws Exception
+                                   long channelID, String filterString, boolean durable,
+                                   boolean failed, Integer failedNodeID) throws Exception
    {      
       Filter filter = filterFactory.createFilter(filterString);
-      return createBinding(nodeID, condition, queueName, channelId, filter, durable, failed);
+      return createBinding(nodeID, condition, queueName, channelID,
+                           filter, durable, failed, failedNodeID);
    }
-   
+
+   /**
+    * @param failedNodeID - ignored for non-clustered bindings.
+    */
    protected Binding createBinding(int nodeID, Condition condition, String queueName,
                                    long channelID, Filter filter, boolean durable,
-                                   boolean failed)
+                                   boolean failed, Integer failedNodeID)
    {
       Queue queue;
 
@@ -577,10 +590,12 @@
          
          ps = conn.prepareStatement(getSQLStatement("INSERT_BINDING"));
          
-         String filterString = binding.getQueue().getFilter() == null ? null : binding.getQueue().getFilter().getFilterString();
+         String filterString =
+            binding.getQueue().getFilter() == null ?
+               null : binding.getQueue().getFilter().getFilterString();
                   
-         ps.setString(1, this.officeName);
-         ps.setInt(2, this.currentNodeId);
+         ps.setString(1, officeName);
+         ps.setInt(2, currentNodeId);
          ps.setString(3, binding.getQueue().getName());
          ps.setString(4, binding.getCondition().toText());         
          if (filterString != null)
@@ -594,6 +609,16 @@
          ps.setLong(6, binding.getQueue().getChannelID());
          ps.setString(7,binding.isFailed() ? "Y":"N");
 
+         Integer failedNodeID = binding.getFailedNodeID();
+         if (failedNodeID == null)
+         {
+            ps.setNull(8, Types.INTEGER);
+         }
+         else
+         {
+            ps.setInt(8, failedNodeID.intValue());
+         }
+
          ps.executeUpdate();
       }
       finally
@@ -814,7 +839,8 @@
       
       if (bindings == null)
       {
-         throw new IllegalStateException("Cannot find condition bindings for " + binding.getCondition());
+         throw new IllegalStateException("Cannot find condition bindings for " +
+            binding.getCondition());
       }
       
       boolean removed = bindings.removeBinding(binding);
@@ -833,14 +859,33 @@
    protected Map getDefaultDMLStatements()
    {                
       Map map = new LinkedHashMap();
+
       map.put("INSERT_BINDING",
-              "INSERT INTO JMS_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, CONDITION, SELECTOR, CHANNEL_ID, IS_FAILED_OVER) " +
-              "VALUES (?, ?, ?, ?, ?, ?, ?)");
+              "INSERT INTO JMS_POSTOFFICE (" +
+                 "POSTOFFICE_NAME, " +
+                 "NODE_ID, " +
+                 "QUEUE_NAME, " +
+                 "CONDITION, " +
+                 "SELECTOR, " +
+                 "CHANNEL_ID, " +
+                 "IS_FAILED_OVER, " +
+                 "FAILED_NODE_ID) " +
+              "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
+
       map.put("DELETE_BINDING",
               "DELETE FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?");
+
       map.put("LOAD_BINDINGS",
-              "SELECT NODE_ID, QUEUE_NAME, CONDITION, SELECTOR, CHANNEL_ID, IS_FAILED_OVER FROM JMS_POSTOFFICE " +
-              "WHERE POSTOFFICE_NAME  = ?");
+              "SELECT " +
+                 "NODE_ID, " +
+                 "QUEUE_NAME, " +
+                 "CONDITION, " +
+                 "SELECTOR, " +
+                 "CHANNEL_ID, " +
+                 "IS_FAILED_OVER, " +
+                 "FAILED_NODE_ID " +
+                 "FROM JMS_POSTOFFICE WHERE POSTOFFICE_NAME  = ?");
+
       return map;
    }
    
@@ -850,7 +895,8 @@
       map.put("CREATE_POSTOFFICE_TABLE",
               "CREATE TABLE JMS_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER," +
               "QUEUE_NAME VARCHAR(1023), CONDITION VARCHAR(1023), " +
-              "SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER CHAR(1))");
+              "SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, IS_FAILED_OVER CHAR(1), " +
+              "FAILED_NODE_ID INTEGER)");
       return map;
    }
    

Modified: trunk/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java	2007-01-05 01:40:23 UTC (rev 1894)
@@ -1555,29 +1555,29 @@
 
       if (!isState)
       {
-         //Must be first member in group or non clustered- we load the state ourself from the database
+         // Must be first member in group or non clustered, we load the state ourself from
+         // the database.
 
          if (trace) { log.trace(this + " is the first member of group, so will load bindings from database"); }
-
          super.loadBindings();
       }
       else
       {
-         //The state will be set in due course via the MessageListener - we must wait until this happens
+         // The state will be set in due course via the MessageListener, we must wait until this
+         // happens.
 
-         if (trace) { log.trace(this.currentNodeId + " Not first member of group- so waiting for state to arrive...."); }
+         if (trace) { log.trace(this + " not first member of group, so waiting for state to arrive...."); }
 
-      synchronized (setStateLock)
-      {
-         //TODO we should implement a timeout on this
-         while (!stateSet)
+         synchronized (setStateLock)
          {
-            setStateLock.wait();
+            //TODO we should implement a timeout on this
+            while (!stateSet)
+            {
+               setStateLock.wait();
+            }
          }
+         if (trace) { log.trace(this + " received state"); }
       }
-
-         if (trace) { log.trace(this.currentNodeId + " Received state"); }
-      }
    }
 
    protected Binding createBinding(int nodeId, Condition condition, String queueName,

Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java	2007-01-04 23:07:32 UTC (rev 1893)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java	2007-01-05 01:40:23 UTC (rev 1894)
@@ -1128,7 +1128,6 @@
       }
    }
 
-
    public void testSimpleFailover() throws Exception
    {
       Connection conn = null;
@@ -1191,8 +1190,6 @@
       }
    }
 
-
-
    // Package protected ----------------------------------------------------------------------------
 
    // Protected ------------------------------------------------------------------------------------




More information about the jboss-cvs-commits mailing list