Skip to content

Commit 2f0d22b

Browse files
authored
ZOOKEEPER-5012: guard zkDb close in QuorumPeer shutdown
Reviewers: PDavid, anmolnar Author: seekskyworld Closes #2345 from seekskyworld/fix/5012-quorumpeer-shutdown-npe
1 parent d20061b commit 2f0d22b

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,10 +1705,12 @@ public void shutdown() {
17051705
this.interrupt();
17061706
getElectionAlg().shutdown();
17071707
}
1708-
try {
1709-
zkDb.close();
1710-
} catch (IOException ie) {
1711-
LOG.warn("Error closing logs ", ie);
1708+
if (zkDb != null) {
1709+
try {
1710+
zkDb.close();
1711+
} catch (IOException ie) {
1712+
LOG.warn("Error closing logs ", ie);
1713+
}
17121714
}
17131715
}
17141716

zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package org.apache.zookeeper.server.quorum;
2020

21+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
2122
import static org.junit.jupiter.api.Assertions.assertEquals;
2223
import static org.junit.jupiter.api.Assertions.assertFalse;
2324
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -80,6 +81,12 @@ public void testQuorumPeerListendOnSpecifiedClientIP(@TempDir File dataDir) thro
8081
peer2.shutdown();
8182
}
8283

84+
@Test
85+
public void testShutdownWithoutZkDbDoesNotThrow() throws Exception {
86+
QuorumPeer peer = new QuorumPeer();
87+
assertDoesNotThrow(peer::shutdown);
88+
}
89+
8390
@Test
8491
public void testProcessReconfigWillRecreateSocketAddresses() throws IOException {
8592
QuorumPeerConfig.setReconfigEnabled(true);

0 commit comments

Comments
 (0)