From 42785ab206ff561da7e9d5b6ac6e23ccd589124a Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Tue, 30 Dec 2014 20:44:23 +0100 Subject: Improve stability of randomly allocated ports (when sonar.web.port or sonar.search.port are set to zero) --- .../main/java/org/sonar/process/NetworkUtils.java | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'server/sonar-process') diff --git a/server/sonar-process/src/main/java/org/sonar/process/NetworkUtils.java b/server/sonar-process/src/main/java/org/sonar/process/NetworkUtils.java index 0443d5148be..44fcfb7677d 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/NetworkUtils.java +++ b/server/sonar-process/src/main/java/org/sonar/process/NetworkUtils.java @@ -21,6 +21,8 @@ package org.sonar.process; import org.apache.commons.io.IOUtils; +import java.io.IOException; +import java.net.InetSocketAddress; import java.net.ServerSocket; public class NetworkUtils { @@ -33,14 +35,18 @@ public class NetworkUtils { * Get an unused port */ public static int freePort() { - ServerSocket s = null; - try { - s = new ServerSocket(0); - return s.getLocalPort(); - } catch (Exception e) { - throw new IllegalStateException("Can not find an open network port", e); + ServerSocket socket = null; + try { + socket = new ServerSocket(); + socket.setReuseAddress(true); + socket.bind(new InetSocketAddress(0)); + return socket.getLocalPort(); + + } catch (IOException e) { + throw new IllegalStateException("Can not find a free network port", e); + } finally { - IOUtils.closeQuietly(s); + IOUtils.closeQuietly(socket); } } } -- cgit v1.2.3