diff --git a/src/main/java/org/mariadb/jdbc/internal/failover/impl/AuroraListener.java b/src/main/java/org/mariadb/jdbc/internal/failover/impl/AuroraListener.java index 9ec3ec230..9d0148685 100644 --- a/src/main/java/org/mariadb/jdbc/internal/failover/impl/AuroraListener.java +++ b/src/main/java/org/mariadb/jdbc/internal/failover/impl/AuroraListener.java @@ -223,7 +223,7 @@ public void reconnectFailedConnection(SearchFilter initialSearchFilter) throws S || (urlParser.getOptions().allowMasterDownConnection && secondaryProtocol != null))); } - // When reconnecting, search if replicas list has change since first initialisation + // When reconnecting, search if replicas list has changed since first initialisation if (getCurrentProtocol() != null && !getCurrentProtocol().isClosed()) { retrieveAllEndpointsAndSet(getCurrentProtocol()); } @@ -239,14 +239,16 @@ public void reconnectFailedConnection(SearchFilter initialSearchFilter) throws S * instance identifiers and sets urlParser accordingly. * * @param protocol current protocol connected to + * @return host address list * @throws SQLException if connection error occur */ - public void retrieveAllEndpointsAndSet(Protocol protocol) throws SQLException { + public List retrieveAllEndpointsAndSet(Protocol protocol) throws SQLException { // For a given cluster, same port for all endpoints and same end host address if (clusterDnsSuffix != null) { List endpoints = getCurrentEndpointIdentifiers(protocol); setUrlParserFromEndpoints(endpoints, protocol.getPort()); } + return hostAddresses; } /** @@ -304,8 +306,9 @@ private List getCurrentEndpointIdentifiers(Protocol protocol) throws SQL * * @param endpoints instance identifiers * @param port port that is common to all endpoints + * @return list of host addresses */ - private void setUrlParserFromEndpoints(List endpoints, int port) { + private List setUrlParserFromEndpoints(List endpoints, int port) { List addresses = new ArrayList<>(); for (String endpoint : endpoints) { if (endpoint != null) { @@ -316,6 +319,7 @@ private void setUrlParserFromEndpoints(List endpoints, int port) { addresses.addAll(urlParser.getHostAddresses()); } hostAddresses = addresses; + return hostAddresses; } /** diff --git a/src/main/java/org/mariadb/jdbc/internal/protocol/AuroraProtocol.java b/src/main/java/org/mariadb/jdbc/internal/protocol/AuroraProtocol.java index a23b933c3..ac9dc417c 100644 --- a/src/main/java/org/mariadb/jdbc/internal/protocol/AuroraProtocol.java +++ b/src/main/java/org/mariadb/jdbc/internal/protocol/AuroraProtocol.java @@ -181,11 +181,11 @@ public static void loop( if (searchFilter.isFineIfFoundOnlyMaster() && listener.getUrlParser().getHostAddresses().size() <= 1 && protocol.getHostAddress().equals(listener.getClusterHostAddress())) { - listener.retrieveAllEndpointsAndSet(protocol); + List hostAddresses = listener.retrieveAllEndpointsAndSet(protocol); - if (listener.getUrlParser().getHostAddresses().size() > 1) { + if (hostAddresses.size() > 1) { // add newly discovered end-point to loop - loopAddresses.addAll(listener.getUrlParser().getHostAddresses()); + loopAddresses.addAll(hostAddresses); // since there is more than one end point, reactivate connection to a read-only host searchFilter = new SearchFilter(false); } @@ -200,11 +200,11 @@ public static void loop( // in case cluster DNS is currently pointing to a replica host if (listener.getUrlParser().getHostAddresses().size() <= 1 && protocol.getHostAddress().equals(listener.getClusterHostAddress())) { - listener.retrieveAllEndpointsAndSet(protocol); + List hostAddresses = listener.retrieveAllEndpointsAndSet(protocol); - if (listener.getUrlParser().getHostAddresses().size() > 1) { + if (hostAddresses.size() > 1) { // add newly discovered end-point to loop - loopAddresses.addAll(listener.getUrlParser().getHostAddresses()); + loopAddresses.addAll(hostAddresses); // since there is more than one end point, reactivate connection to a read-only host searchFilter = new SearchFilter(false); }