From fedaab87fe324af79e9b9284dead7f5c31e3eb61 Mon Sep 17 00:00:00 2001 From: Andor Molnar Date: Tue, 23 Jun 2026 17:36:56 -0500 Subject: [PATCH] ZOOKEEPER-5059. Destroy Login thread in shutdown() method --- .../org/apache/zookeeper/server/quorum/QuorumPeer.java | 6 ++++++ .../server/quorum/auth/NullQuorumAuthLearner.java | 5 +++++ .../zookeeper/server/quorum/auth/NullQuorumAuthServer.java | 5 +++++ .../zookeeper/server/quorum/auth/QuorumAuthLearner.java | 4 ++++ .../zookeeper/server/quorum/auth/QuorumAuthServer.java | 4 ++++ .../server/quorum/auth/SaslQuorumAuthLearner.java | 7 +++++++ .../zookeeper/server/quorum/auth/SaslQuorumAuthServer.java | 7 +++++++ 7 files changed, 38 insertions(+) diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java index 296ea05374b..56dcbd224d1 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java @@ -1712,6 +1712,12 @@ public void shutdown() { LOG.warn("Error closing logs ", ie); } } + if (authServer != null) { + authServer.shutdown(); + } + if (authLearner != null) { + authLearner.shutdown(); + } } /** diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthLearner.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthLearner.java index 1b120b7f9ba..c5e8a0bbe72 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthLearner.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthLearner.java @@ -31,4 +31,9 @@ public void authenticate(Socket sock, String hostname) { return; // simply return don't require auth } + @Override + public void shutdown() { + // no-op + } + } diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthServer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthServer.java index 96be1da4fe8..effc6d35d16 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthServer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/NullQuorumAuthServer.java @@ -32,4 +32,9 @@ public void authenticate(final Socket sock, final DataInputStream din) { // simply return don't require auth } + @Override + public void shutdown() { + // no-op + } + } diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthLearner.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthLearner.java index 02ac3263f30..eb816920495 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthLearner.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthLearner.java @@ -38,4 +38,8 @@ public interface QuorumAuthLearner { */ void authenticate(Socket sock, String hostname) throws IOException; + /** + * Shutdown the learner and release resources. + */ + void shutdown(); } diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthServer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthServer.java index 8f771d43b76..75760fad836 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthServer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/QuorumAuthServer.java @@ -38,4 +38,8 @@ public interface QuorumAuthServer { */ void authenticate(Socket sock, DataInputStream din) throws IOException; + /** + * Shut down the server and release resources. + */ + void shutdown(); } diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthLearner.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthLearner.java index 3151a57567d..db032da5754 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthLearner.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthLearner.java @@ -144,6 +144,13 @@ public void authenticate(Socket sock, String hostName) throws IOException { } } + @Override + public void shutdown() { + if (learnerLogin != null) { + learnerLogin.shutdown(); + } + } + private void checkAuthStatus(Socket sock, QuorumAuth.Status qpStatus) throws SaslException { if (qpStatus == QuorumAuth.Status.SUCCESS) { LOG.info( diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthServer.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthServer.java index ca651115d0a..940451eff39 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthServer.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/auth/SaslQuorumAuthServer.java @@ -156,6 +156,13 @@ public void authenticate(Socket sock, DataInputStream din) throws SaslException } } + @Override + public void shutdown() { + if (serverLogin != null) { + serverLogin.shutdown(); + } + } + private byte[] receive(DataInputStream din) throws IOException { QuorumAuthPacket authPacket = new QuorumAuthPacket(); BinaryInputArchive bia = BinaryInputArchive.getArchive(din);