diff --git a/wrapper/src/main/java/software/amazon/jdbc/plugin/AuroraConnectionTrackerPlugin.java b/wrapper/src/main/java/software/amazon/jdbc/plugin/AuroraConnectionTrackerPlugin.java index 647179750..63791d05e 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/plugin/AuroraConnectionTrackerPlugin.java +++ b/wrapper/src/main/java/software/amazon/jdbc/plugin/AuroraConnectionTrackerPlugin.java @@ -31,12 +31,14 @@ import software.amazon.jdbc.JdbcCallable; import software.amazon.jdbc.NodeChangeOptions; import software.amazon.jdbc.PluginService; +import software.amazon.jdbc.cleanup.CanReleaseResources; import software.amazon.jdbc.plugin.failover.FailoverSQLException; import software.amazon.jdbc.util.RdsUrlType; import software.amazon.jdbc.util.RdsUtils; import software.amazon.jdbc.util.SubscribedMethodHelper; -public class AuroraConnectionTrackerPlugin extends AbstractConnectionPlugin { +public class AuroraConnectionTrackerPlugin extends AbstractConnectionPlugin implements + CanReleaseResources { static final String METHOD_ABORT = "Connection.abort"; static final String METHOD_CLOSE = "Connection.close"; @@ -147,6 +149,11 @@ public void notifyNodeListChanged(final Map> } } + @Override + public void releaseResources() { + tracker.pruneNullConnections(); + } + private HostSpec getWriter(final @NonNull List hosts) { for (final HostSpec hostSpec : hosts) { if (hostSpec.getRole() == HostRole.WRITER) { diff --git a/wrapper/src/main/java/software/amazon/jdbc/plugin/OpenedConnectionTracker.java b/wrapper/src/main/java/software/amazon/jdbc/plugin/OpenedConnectionTracker.java index c0f69597b..366fd21af 100644 --- a/wrapper/src/main/java/software/amazon/jdbc/plugin/OpenedConnectionTracker.java +++ b/wrapper/src/main/java/software/amazon/jdbc/plugin/OpenedConnectionTracker.java @@ -169,4 +169,10 @@ private void logConnectionQueue(final String host, final Queue { + queue.removeIf(connectionWeakReference -> Objects.equals(connectionWeakReference.get(), null)); + }); + } }