[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