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 <[email protected]> Authored: Fri Apr 15 11:00:33 2016 -0400 Committer: Timothy Bish <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
