diff --git a/wrapper/src/main/java/software/amazon/jdbc/Driver.java b/wrapper/src/main/java/software/amazon/jdbc/Driver.java index 5c44dae6d..b66e216b4 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/Driver.java +++ b/wrapper/src/main/java/software/amazon/jdbc/Driver.java @@ -412,6 +412,7 @@ public static void releaseResources() { CustomEndpointPlugin.closeMonitors(); HikariPoolsHolder.closeAllPools(); HostResponseTimeServiceImpl.closeAllMonitors(); + MonitoringRdsHostListProvider.closeAllMonitors(); clearCaches(); } } diff --git a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/ClusterTopologyMonitorImpl.java b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/ClusterTopologyMonitorImpl.java index ee2d46511..24461916c 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/ClusterTopologyMonitorImpl.java +++ b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/ClusterTopologyMonitorImpl.java @@ -265,6 +265,7 @@ protected List waitTillTopologyGetsUpdated(final long timeoutMs) throw @Override public void close() throws Exception { this.stop.set(true); + this.nodeThreadsStop.set(true); // It breaks a waiting/sleeping cycles in monitoring thread synchronized (this.requestToUpdateTopology) { @@ -276,6 +277,8 @@ public void close() throws Exception { if (!this.monitorExecutor.awaitTermination(30, TimeUnit.SECONDS)) { this.monitorExecutor.shutdownNow(); } + + this.nodeThreads.clear(); } @Override diff --git a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/MonitoringRdsHostListProvider.java b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/MonitoringRdsHostListProvider.java index 0dc9a46e9..398f9b605 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/MonitoringRdsHostListProvider.java +++ b/wrapper/src/main/java/software/amazon/jdbc/hostlistprovider/monitoring/MonitoringRdsHostListProvider.java @@ -85,17 +85,8 @@ public MonitoringRdsHostListProvider( CLUSTER_TOPOLOGY_HIGH_REFRESH_RATE_MS.getLong(this.properties)); } - /** - * Clear topology cache for the current cluster. - */ - public void clear() { - topologyCache.remove(this.clusterId); - } - public static void clearCache() { - topologyCache.clear(); - primaryClusterIdCache.clear(); - suggestedPrimaryClusterIdCache.clear(); + clearAll(); } public static void closeAllMonitors() {