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/04/15 17:00:57 UTC

qpid-jms git commit: QPIDJMS-172 Don't try and clean up an already cleaned up connection failure.

Repository: qpid-jms
Updated Branches:
  refs/heads/master c01017002 -> bcd4a91ca


QPIDJMS-172 Don't try and clean up an already cleaned up connection
failure.

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

Branch: refs/heads/master
Commit: bcd4a91cae3df8c30130fc5a0d4c80d52fce7ec6
Parents: c010170
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Apr 15 11:00:33 2016 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Apr 15 11:00:33 2016 -0400

----------------------------------------------------------------------
 .../jms/provider/failover/FailoverProvider.java | 74 ++++++++++----------
 1 file changed, 38 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bcd4a91c/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 fa20ee1..a8a43ea 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
@@ -532,49 +532,51 @@ public class FailoverProvider extends DefaultProviderListener implements Provide
      *        the error that triggered the failure of the provider.
      */
     private void handleProviderFailure(final IOException cause) {
-        LOG.debug("handling Provider failure: {}", cause.getMessage());
-        LOG.trace("stack", cause);
-
-        provider.setProviderListener(closedListener);
-        URI failedURI = this.provider.getRemoteURI();
-        try {
-            provider.close();
-        } catch (Throwable error) {
-            LOG.trace("Caught exception while closing failed provider: {}", error.getMessage());
-        }
-        provider = null;
+        if (provider != null) {
+            LOG.debug("handling Provider failure: {}", cause.getMessage());
+            LOG.trace("stack", cause);
+
+            provider.setProviderListener(closedListener);
+            URI failedURI = this.provider.getRemoteURI();
+            try {
+                provider.close();
+            } catch (Throwable error) {
+                LOG.trace("Caught exception while closing failed provider: {}", error.getMessage());
+            }
+            provider = null;
 
-        if (reconnectAllowed(cause)) {
+            if (reconnectAllowed(cause)) {
 
-            if (cause instanceof ProviderRedirectedException) {
-                ProviderRedirectedException redirect = (ProviderRedirectedException) cause;
-                try {
-                    uris.addFirst(new URI(failedURI.getScheme() + "://" + redirect.getNetworkHost() + ":" + redirect.getPort()));
-                } catch (URISyntaxException ex) {
-                    LOG.warn("Could not construct redirection URI from remote provided information");
+                if (cause instanceof ProviderRedirectedException) {
+                    ProviderRedirectedException redirect = (ProviderRedirectedException) cause;
+                    try {
+                        uris.addFirst(new URI(failedURI.getScheme() + "://" + redirect.getNetworkHost() + ":" + redirect.getPort()));
+                    } catch (URISyntaxException ex) {
+                        LOG.warn("Could not construct redirection URI from remote provided information");
+                    }
                 }
-            }
 
-            ProviderListener listener = this.listener;
-            if (listener != null) {
-                listener.onConnectionInterrupted(failedURI);
-            }
+                ProviderListener listener = this.listener;
+                if (listener != null) {
+                    listener.onConnectionInterrupted(failedURI);
+                }
 
-            // Start watching for request timeouts while we are offline, unless we already are.
-            if (requestTimeoutTask == null) {
-                long sweeperInterval = getRequestSweeperInterval();
-                if (sweeperInterval > 0) {
-                    LOG.trace("Request timeout monitoring enabled: interval = {}ms", sweeperInterval);
-                    requestTimeoutTask = serializer.scheduleWithFixedDelay(
-                        new FailoverRequestSweeper(), sweeperInterval, sweeperInterval, TimeUnit.MILLISECONDS);
+                // Start watching for request timeouts while we are offline, unless we already are.
+                if (requestTimeoutTask == null) {
+                    long sweeperInterval = getRequestSweeperInterval();
+                    if (sweeperInterval > 0) {
+                        LOG.trace("Request timeout monitoring enabled: interval = {}ms", sweeperInterval);
+                        requestTimeoutTask = serializer.scheduleWithFixedDelay(
+                            new FailoverRequestSweeper(), sweeperInterval, sweeperInterval, TimeUnit.MILLISECONDS);
+                    }
                 }
-            }
 
-            triggerReconnectionAttempt();
-        } else {
-            ProviderListener listener = this.listener;
-            if (listener != null) {
-                listener.onConnectionFailure(cause);
+                triggerReconnectionAttempt();
+            } else {
+                ProviderListener listener = this.listener;
+                if (listener != null) {
+                    listener.onConnectionFailure(cause);
+                }
             }
         }
     }


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