You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ha...@apache.org on 2014/12/16 00:21:59 UTC

[14/17] activemq git commit: https://issues.apache.org/jira/browse/AMQ-5231

https://issues.apache.org/jira/browse/AMQ-5231

Only apply timeout to the Message sends, other commands are handled
separately as needed.


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/70b02fde
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/70b02fde
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/70b02fde

Branch: refs/heads/activemq-5.10.x
Commit: 70b02fde333959b4c7ad91e15ddbca144061e2d2
Parents: f63bd32
Author: Timothy Bish <ta...@gmail.com>
Authored: Wed Jun 18 12:58:50 2014 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Mon Dec 15 17:01:30 2014 -0500

----------------------------------------------------------------------
 .../transport/failover/FailoverTransport.java   |  2 +-
 .../transport/failover/FailoverTimeoutTest.java | 47 +++++++++++++++++++-
 2 files changed, 46 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/70b02fde/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
index 2829d41..6df82ed 100755
--- a/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
+++ b/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
@@ -602,7 +602,7 @@ public class FailoverTransport implements CompositeTransport {
                                 LOG.trace("Waiting for transport to reconnect..: " + command);
                             }
                             long end = System.currentTimeMillis();
-                            if (timeout > 0 && (end - start > timeout)) {
+                            if (command.isMessage() && timeout > 0 && (end - start > timeout)) {
                                 timedout = true;
                                 if (LOG.isInfoEnabled()) {
                                     LOG.info("Failover timed out after " + (end - start) + "ms");

http://git-wip-us.apache.org/repos/asf/activemq/blob/70b02fde/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
index e52b2c7..9ef6e28 100644
--- a/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverTimeoutTest.java
@@ -16,23 +16,36 @@
  */
 package org.apache.activemq.transport.failover;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import java.net.URI;
+
 import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
-import junit.framework.TestCase;
+
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.BrokerService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class FailoverTimeoutTest {
 
-public class FailoverTimeoutTest extends TestCase {
+    private static final Logger LOG = LoggerFactory.getLogger(FailoverTimeoutTest.class);
 
     private static final String QUEUE_NAME = "test.failovertimeout";
     BrokerService bs;
     URI tcpUri;
 
+    @Before
     public void setUp() throws Exception {
         bs = new BrokerService();
         bs.setUseJmx(false);
@@ -41,12 +54,41 @@ public class FailoverTimeoutTest extends TestCase {
         tcpUri = bs.getTransportConnectors().get(0).getConnectUri();
     }
 
+    @After
     public void tearDown() throws Exception {
         if (bs != null) {
             bs.stop();
         }
     }
 
+    @Test
+    public void testTimoutDoesNotFailConnectionAttempts() throws Exception {
+        bs.stop();
+        long timeout = 1000;
+
+        long startTime = System.currentTimeMillis();
+
+        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(
+            "failover:(" + tcpUri + ")" +
+            "?timeout=" + timeout + "&useExponentialBackOff=false" +
+            "&maxReconnectAttempts=5" + "&initialReconnectDelay=1000");
+        Connection connection = cf.createConnection();
+        try {
+            connection.start();
+            fail("Should have failed to connect");
+        } catch (JMSException ex) {
+            LOG.info("Caught exception on call to start: {}", ex.getMessage());
+        }
+
+        long endTime = System.currentTimeMillis();
+        long duration = endTime - startTime;
+
+        LOG.info("Time spent waiting to connect: {} ms", duration);
+
+        assertTrue(duration > 3000);
+    }
+
+    @Test
     public void testTimeout() throws Exception {
 
         long timeout = 1000;
@@ -77,6 +119,7 @@ public class FailoverTimeoutTest extends TestCase {
         bs.stop();
     }
 
+    @Test
     public void testUpdateUris() throws Exception {
 
         ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?useExponentialBackOff=false");