From bc9ff5a09fb0aad28d94c2aa72b4e31011b61905 Mon Sep 17 00:00:00 2001 From: Matt Pavlovich Date: Thu, 23 Dec 2021 07:57:24 -0600 Subject: [PATCH] [AMQ-8443] Allow reconnect command to work --- .../activemq/transport/failover/FailoverTransport.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 6b6f518bdc..dcb4cb8fdf 100644 --- 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 @@ -122,6 +122,7 @@ public class FailoverTransport implements CompositeTransport { private String updateURIsURL = null; private boolean rebalanceUpdateURIs = true; private boolean doRebalance = false; + private boolean doReconnect = false; private boolean connectedToPriority = false; private boolean priorityBackup = false; @@ -750,6 +751,7 @@ public class FailoverTransport implements CompositeTransport { reconnect(rebalance); } } + @Override public void remove(boolean rebalance, URI u[]) { @@ -943,7 +945,7 @@ public class FailoverTransport implements CompositeTransport { failure = new IOException("No uris available to connect to."); } else { if (doRebalance) { - if (connectedToPriority || compareURIs(connectList.get(0), connectedTransportURI)) { + if (connectedToPriority || (!doReconnect && compareURIs(connectList.get(0), connectedTransportURI))) { // already connected to first in the list, no need to rebalance doRebalance = false; return false; @@ -958,6 +960,7 @@ public class FailoverTransport implements CompositeTransport { } catch (Exception e) { LOG.debug("Caught an exception stopping existing transport for rebalance", e); } + doReconnect = false; } doRebalance = false; } @@ -1256,6 +1259,8 @@ public class FailoverTransport implements CompositeTransport { @Override public void reconnect(URI uri) throws IOException { + uris.clear(); + doReconnect = true; add(true, new URI[]{uri}); }