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