[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