[jboss-cvs] JBoss Messaging SVN: r5593 - in branches/Branch_1_4: tests/src/org/jboss/test/messaging/jms/clustering and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 7 09:33:34 EST 2009
Author: gaohoward
Date: 2009-01-07 09:33:34 -0500 (Wed, 07 Jan 2009)
New Revision: 5593
Modified:
branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java
Log:
JBMESSAGING-1457
Modified: branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
===================================================================
--- branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java 2009-01-07 14:11:25 UTC (rev 5592)
+++ branches/Branch_1_4/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java 2009-01-07 14:33:34 UTC (rev 5593)
@@ -3021,7 +3021,7 @@
{
//Cannot failover if there is no queue deployed.
- throw new IllegalStateException("Cannot failover " + queue.getName() + " since it does not exist on this node. " +
+ log.warn("Cannot failover " + queue.getName() + " since it does not exist on this node. " +
"You must deploy your clustered destinations on ALL nodes of the cluster");
}
Modified: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java 2009-01-07 14:11:25 UTC (rev 5592)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/clustering/FailoverTest.java 2009-01-07 14:33:34 UTC (rev 5593)
@@ -16,6 +16,7 @@
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
+import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.Session;
import javax.jms.TextMessage;
@@ -2050,6 +2051,135 @@
}
}
+ /**
+ * deploy a distributed queue on only one node and then perform failover
+ * The failover for other nodes should not be affected.
+ * https://jira.jboss.org/jira/browse/JBMESSAGING-1457
+ */
+ public void testFailoverWithSingleDistributedTargetNoMessage() throws Exception
+ {
+ Connection conn = null;
+
+ try
+ {
+ ServerManagement.deployQueue("singleDeployedDistributedQueue", 1);
+
+ conn = createConnectionOnServer(cf, 1);
+
+ Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageProducer prod = session.createProducer(queue[1]);
+
+ Message m = session.createTextMessage("blimey");
+ prod.send(m);
+
+ // register a failover listener
+ SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+ ((JBossConnection)conn).registerFailoverListener(failoverListener);
+
+ ServerManagement.kill(1);
+
+ // wait for the client-side failover to complete
+
+ while(true)
+ {
+ FailoverEvent event = failoverListener.getEvent(30000);
+ if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+ {
+ break;
+ }
+ if (event == null)
+ {
+ fail("Did not get expected FAILOVER_COMPLETED event");
+ }
+ }
+
+ MessageConsumer cons = session.createConsumer(queue[1]);
+
+ // failover complete
+ assertEquals(0, getServerId(conn));
+
+ conn.start();
+
+ TextMessage rm = (TextMessage)cons.receive(2000);
+ assertNotNull(rm);
+ assertEquals("blimey", rm.getText());
+
+ }
+ finally
+ {
+ if (conn != null)
+ {
+ conn.close();
+ }
+ }
+ }
+
+ /**
+ * deploy a distributed queue on only one node and send some messages, then perform failover
+ * The failover for other nodes should not be affected.
+ * https://jira.jboss.org/jira/browse/JBMESSAGING-1457
+ */
+ public void testFailoverWithSingleDistributedTargetWithMessage() throws Exception
+ {
+ Connection conn = null;
+
+ try
+ {
+ ServerManagement.deployQueue("singleDeployedDistributedQueue", 1);
+ Queue lameClusteredQueue = (Queue)ic[1].lookup("queue/singleDeployedDistributedQueue");
+
+ conn = createConnectionOnServer(cf, 1);
+
+ Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ MessageProducer prod = session.createProducer(queue[1]);
+ MessageProducer prod1 = session.createProducer(lameClusteredQueue);
+
+ Message m = session.createTextMessage("blimey");
+ prod.send(m);
+ Message m1 = session.createTextMessage("message-to-lose");
+ prod1.send(m1);
+
+ // register a failover listener
+ SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+ ((JBossConnection)conn).registerFailoverListener(failoverListener);
+
+ ServerManagement.kill(1);
+
+ // wait for the client-side failover to complete
+
+ while(true)
+ {
+ FailoverEvent event = failoverListener.getEvent(30000);
+ if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+ {
+ break;
+ }
+ if (event == null)
+ {
+ fail("Did not get expected FAILOVER_COMPLETED event");
+ }
+ }
+
+ MessageConsumer cons = session.createConsumer(queue[1]);
+
+ // failover complete
+ assertEquals(0, getServerId(conn));
+
+ conn.start();
+
+ TextMessage rm = (TextMessage)cons.receive(2000);
+ assertNotNull(rm);
+ assertEquals("blimey", rm.getText());
+ }
+ finally
+ {
+ if (conn != null)
+ {
+ conn.close();
+ }
+ }
+ }
+
// Package protected ----------------------------------------------------------------------------
// Protected ------------------------------------------------------------------------------------
More information about the jboss-cvs-commits
mailing list