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 cf6f2f26ce0..296ea05374b 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 3a7e88955b5..8c95a29fa32 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);