This is an automated email from the ASF dual-hosted git repository.

andor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 2f0d22bce ZOOKEEPER-5012: guard zkDb close in QuorumPeer shutdown
2f0d22bce is described below

commit 2f0d22bcebf33fba9a45b15454e89f116197f918
Author: seeksky <[email protected]>
AuthorDate: Thu Feb 19 23:47:33 2026 +0800

    ZOOKEEPER-5012: guard zkDb close in QuorumPeer shutdown
    
    Reviewers: PDavid, anmolnar
    Author: seekskyworld
    Closes #2345 from seekskyworld/fix/5012-quorumpeer-shutdown-npe
---
 .../java/org/apache/zookeeper/server/quorum/QuorumPeer.java    | 10 ++++++----
 .../org/apache/zookeeper/server/quorum/QuorumPeerTest.java     |  7 +++++++
 2 files changed, 13 insertions(+), 4 deletions(-)

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 cf6f2f26c..296ea0537 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
@@ -1705,10 +1705,12 @@ public void shutdown() {
             this.interrupt();
             getElectionAlg().shutdown();
         }
-        try {
-            zkDb.close();
-        } catch (IOException ie) {
-            LOG.warn("Error closing logs ", ie);
+        if (zkDb != null) {
+            try {
+                zkDb.close();
+            } catch (IOException ie) {
+                LOG.warn("Error closing logs ", ie);
+            }
         }
     }
 
diff --git 
a/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerTest.java
 
b/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerTest.java
index 3a7e88955..8c95a29fa 100644
--- 
a/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerTest.java
+++ 
b/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerTest.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -80,6 +81,12 @@ public void 
testQuorumPeerListendOnSpecifiedClientIP(@TempDir File dataDir) thro
         peer2.shutdown();
     }
 
+    @Test
+    public void testShutdownWithoutZkDbDoesNotThrow() throws Exception {
+        QuorumPeer peer = new QuorumPeer();
+        assertDoesNotThrow(peer::shutdown);
+    }
+
     @Test
     public void testProcessReconfigWillRecreateSocketAddresses() throws 
IOException {
         QuorumPeerConfig.setReconfigEnabled(true);

Reply via email to