You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2016/03/14 22:15:50 UTC

qpid-jms git commit: QPIDJMS-154 Don't pass along a JMSException on connect so that attempts to connect can continue until stopped by user or by configuration.

Repository: qpid-jms
Updated Branches:
  refs/heads/master 7d2d8531e -> 15f6446ac


QPIDJMS-154 Don't pass along a JMSException on connect so that attempts
to connect can continue until stopped by user or by configuration.  



Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/15f6446a
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/15f6446a
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/15f6446a

Branch: refs/heads/master
Commit: 15f6446ac0bda96230c9dbe0f54b7495911363b6
Parents: 7d2d853
Author: Timothy Bish <ta...@gmail.com>
Authored: Mon Mar 14 17:15:41 2016 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Mon Mar 14 17:15:41 2016 -0400

----------------------------------------------------------------------
 .../jms/provider/failover/FailoverProvider.java | 18 ++++++++-
 .../failover/FailoverIntegrationTest.java       | 40 ++++++++++++++++++++
 2 files changed, 57 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/15f6446a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
index 07be102..a8e67bf 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
@@ -946,7 +946,7 @@ public class FailoverProvider extends DefaultProviderListener implements Provide
      */
     protected abstract class FailoverRequest extends WrappedAsyncResult implements Runnable {
 
-        private final long id = requestId.incrementAndGet();
+        protected final long id = requestId.incrementAndGet();
 
         public FailoverRequest(AsyncResult watcher) {
             super(watcher);
@@ -1069,6 +1069,22 @@ public class FailoverProvider extends DefaultProviderListener implements Provide
             });
         }
 
+        @Override
+        public void onFailure(final Throwable result) {
+            if (closingConnection.get() || closed.get() || failed.get()) {
+                requests.remove(id);
+                super.onFailure(result);
+            } else {
+                LOG.debug("Request received error: {}", result.getMessage());
+                serializer.execute(new Runnable() {
+                    @Override
+                    public void run() {
+                        handleProviderFailure(IOExceptionSupport.create(result));
+                    }
+                });
+            }
+        }
+
         public void signalConnected() {
             super.onSuccess();
         }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/15f6446a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
index d7924c3..655e374 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
@@ -94,6 +94,46 @@ public class FailoverIntegrationTest extends QpidJmsTestCase {
     }
 
     @Test(timeout = 20000)
+    public void testFailoverHandlesConnectErrorNotFound() throws Exception {
+
+        try (TestAmqpPeer originalPeer = new TestAmqpPeer();
+             TestAmqpPeer finalPeer = new TestAmqpPeer();) {
+
+            final CountDownLatch finalConnected = new CountDownLatch(1);
+            final String finalURI = createPeerURI(finalPeer);
+
+            originalPeer.rejectConnect(AmqpError.NOT_FOUND, "Resource could not be located", null);
+
+            finalPeer.expectSaslAnonymousConnect();
+            finalPeer.expectBegin();
+
+            final JmsConnection connection = establishAnonymousConnecton(originalPeer, finalPeer);
+            connection.addConnectionListener(new JmsDefaultConnectionListener() {
+                @Override
+                public void onConnectionEstablished(URI remoteURI) {
+                    LOG.info("Connection Established: {}", remoteURI);
+                    if (finalURI.equals(remoteURI.toString())) {
+                        finalConnected.countDown();
+                    }
+                }
+            });
+
+            try {
+                connection.start();
+            } catch (Exception ex) {
+                fail("Should not have thrown an Exception: " + ex);
+            }
+
+            assertTrue("Should connect to final peer", finalConnected.await(5, TimeUnit.SECONDS));
+
+            // Shut it down
+            finalPeer.expectClose();
+            connection.close();
+            finalPeer.waitForAllHandlersToComplete(1000);
+        }
+    }
+
+    @Test(timeout = 20000)
     public void testFailoverHandlesImmediateTransportDropAfterConnect() throws Exception {
         try (TestAmqpPeer originalPeer = new TestAmqpPeer();
              TestAmqpPeer rejectingPeer = new TestAmqpPeer();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org