diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/controller/ControllerServerConfig.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/controller/ControllerServerConfig.java index bbdc14f9ac0..ba980ac6a7e 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/controller/ControllerServerConfig.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/controller/ControllerServerConfig.java @@ -134,14 +134,17 @@ public void ensureComplete() throws IOException { // We will use majority strategy with only this host in the quorum. // We need to provide 2 more ports: one for elections and one for quorum communications. // We will also mark this host as the leader. - ServerSocket randomSocket1 = new ServerSocket(0); - int quorumPort = randomSocket1.getLocalPort(); + int quorumPort; + int electionPort; - ServerSocket randomSocket2 = new ServerSocket(0); - int electionPort = randomSocket2.getLocalPort(); + // Use try-with-resources to find available ports and ensure sockets are closed + try (ServerSocket randomSocket1 = new ServerSocket(0); + ServerSocket randomSocket2 = new ServerSocket(0)) { - randomSocket1.close(); - randomSocket2.close(); + quorumPort = randomSocket1.getLocalPort(); + electionPort = randomSocket2.getLocalPort(); + + } QuorumPeer.QuorumServer selfAsPeer = new QuorumPeer.QuorumServer( 0,