[jboss-cvs] JBoss Messaging SVN: r6578 - in branches/Branch_1_4: tests/src/org/jboss/test/messaging/jms/bridge and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Apr 27 10:01:51 EDT 2009
Author: gaohoward
Date: 2009-04-27 10:01:51 -0400 (Mon, 27 Apr 2009)
New Revision: 6578
Modified:
branches/Branch_1_4/src/main/org/jboss/jms/server/bridge/Bridge.java
branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/ReconnectTest.java
Log:
JBMESSAGING-1543
Modified: branches/Branch_1_4/src/main/org/jboss/jms/server/bridge/Bridge.java
===================================================================
--- branches/Branch_1_4/src/main/org/jboss/jms/server/bridge/Bridge.java 2009-04-27 13:13:45 UTC (rev 6577)
+++ branches/Branch_1_4/src/main/org/jboss/jms/server/bridge/Bridge.java 2009-04-27 14:01:51 UTC (rev 6578)
@@ -330,27 +330,7 @@
if (ok)
{
//start the source connection
-
- sourceConn.start();
-
- started = true;
-
- if (maxBatchTime != -1)
- {
- if (trace) { log.trace("Starting time checker thread"); }
-
- timeChecker = new BatchTimeChecker();
-
- checkerThread = new Thread(timeChecker);
-
- batchExpiryTime = System.currentTimeMillis() + maxBatchTime;
-
- checkerThread.start();
-
- if (trace) { log.trace("Started time checker thread"); }
- }
-
- if (trace) { log.trace("Started " + this); }
+ startSourceConnectionAndChecker();
}
else
{
@@ -359,6 +339,37 @@
}
}
+ private synchronized void startSourceConnectionAndChecker() throws Exception
+ {
+ sourceConn.start();
+
+ started = true;
+
+ if (maxBatchTime != -1)
+ {
+ if (checkerThread != null && checkerThread.isAlive())
+ {
+ log.warn("The time checker thread is running!");
+ }
+ else
+ {
+ if (trace) { log.trace("Starting time checker thread"); }
+
+ timeChecker = new BatchTimeChecker();
+
+ checkerThread = new Thread(timeChecker);
+
+ batchExpiryTime = System.currentTimeMillis() + maxBatchTime;
+
+ checkerThread.start();
+
+ if (trace) { log.trace("Started time checker thread"); }
+ }
+ }
+
+ if (trace) { log.trace("Started " + this); }
+ }
+
public synchronized void stop() throws Exception
{
if (!started)
@@ -1597,18 +1608,17 @@
{
failed = false;
started = true;
-
+
//Start the source connection - note the source connection must not be started before
//otherwise messages will be received and ignored
-
- try
- {
- sourceConn.start();
+
+ try {
+ // alsa: if the bridge has failed to start then it must be started here
+ // not only the sourceConn but the whole bridge
+ startSourceConnectionAndChecker();
+ } catch (Exception e) {
+ log.error("Failed to start source connection", e);
}
- catch (JMSException e)
- {
- log.error("Failed to start source connection", e);
- }
}
}
}
Modified: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/ReconnectTest.java
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/ReconnectTest.java 2009-04-27 13:13:45 UTC (rev 6577)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/bridge/ReconnectTest.java 2009-04-27 14:01:51 UTC (rev 6578)
@@ -22,12 +22,12 @@
package org.jboss.test.messaging.jms.bridge;
import org.jboss.jms.server.bridge.Bridge;
-import org.jboss.jms.server.bridge.BridgeService;
import org.jboss.logging.Logger;
import org.jboss.test.messaging.tools.ServerManagement;
/**
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
* @version <tt>$Revision: 1.1 $</tt>
*
* $Id$
@@ -119,6 +119,12 @@
testCrashAndReconnectDestBasic(Bridge.QOS_ONCE_AND_ONLY_ONCE, false);
}
+ //https://jira.jboss.org/jira/browse/JBMESSAGING-1543
+ public void testReconnectWithBatchTime_P() throws Exception
+ {
+ this.testCrashOnStartupAndReconnectWithBatchTime(Bridge.QOS_ONCE_AND_ONLY_ONCE, true);
+ }
+
// dups ok
public void testCrashAndReconnectDestBasic_DuplicatesOk_P() throws Exception
@@ -343,6 +349,77 @@
}
}
+ /*
+ * Create a bridge with both BatchSize and BatchTime enabled
+ * Crash the destination server
+ * Start the bridge, make it run StartupFailureHandler to retry connection
+ * Bring the destination server back up, let the bridge reconnect
+ * Send some 15 messages, not in multiple by BatchSize (10).
+ * Verify all messages are received
+ */
+ private void testCrashOnStartupAndReconnectWithBatchTime(int qosMode, boolean persistence) throws Exception
+ {
+ Bridge bridge = null;
+
+ try
+ {
+
+ bridge = new Bridge(false, sourceProps, targetProps, "/queue/sourceQueue", "/queue/targetQueue",
+ "/ConnectionFactory", "/ConnectionFactory", null, null, null, null,
+ null, 1000, -1, qosMode, 10, 5000, null, null, false);
+
+ //Now crash the dest server
+
+ log.info("About to crash server");
+
+ ServerManagement.kill(1);
+
+ bridge.start();
+
+ //Wait a while before starting up to simulate the dest being down for a while
+ log.info("Waiting 5 secs before bringing server back up");
+ Thread.sleep(4000);
+ log.info("Done wait");
+
+ //Restart the server
+
+ log.info("Restarting server");
+
+ ServerManagement.start(1, "all", false);
+
+ ServerManagement.deployQueue("targetQueue", 1);
+
+ setUpAdministeredObjects();
+
+ final int NUM_MESSAGES = 15;
+
+ //Send some messages
+
+ sendMessages(cf0, sourceQueue, 0, NUM_MESSAGES , persistence);
+
+ //Wait for batch time checker to start working
+ Thread.sleep(7000);
+
+ checkMessagesReceived(cf1, targetQueue, qosMode, NUM_MESSAGES, false);
+
+ }
+ finally
+ {
+
+ if (bridge != null)
+ {
+ try
+ {
+ bridge.stop();
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to stop bridge", e);
+ }
+ }
+ }
+ }
+
// Inner classes -------------------------------------------------------------------
}
More information about the jboss-cvs-commits
mailing list