diff options
author | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-18 10:48:39 +0200 |
---|---|---|
committer | Stephane Gamard <stephane.gamard@searchbox.com> | 2014-07-18 11:28:00 +0200 |
commit | 76e842ab44f6bb0059be659e6c057af98dcf61a7 (patch) | |
tree | bfcf30e28ca316beb4e0cafa384d0791d2d75db9 /sonar-start | |
parent | 70dabb8a6d7261185e3f9895361e1ef72559fdbd (diff) | |
download | sonarqube-76e842ab44f6bb0059be659e6c057af98dcf61a7.tar.gz sonarqube-76e842ab44f6bb0059be659e6c057af98dcf61a7.zip |
SONAR-5408 - two-way ping for wrapper & process with isReady and JMX retry
Diffstat (limited to 'sonar-start')
-rwxr-xr-x | sonar-start/play.sh | 18 | ||||
-rw-r--r-- | sonar-start/src/main/java/org/sonar/start/StartServer.java | 67 | ||||
-rw-r--r-- | sonar-start/src/main/resources/logback.xml | 12 | ||||
-rw-r--r--[-rwxr-xr-x] | sonar-start/start.sh | 0 |
4 files changed, 66 insertions, 31 deletions
diff --git a/sonar-start/play.sh b/sonar-start/play.sh new file mode 100755 index 00000000000..3f13a040c00 --- /dev/null +++ b/sonar-start/play.sh @@ -0,0 +1,18 @@ +# killall -9 java; + +cd /Volumes/data/sonar/sonarqube/server/sonar-process +mvn clean package install -DskipTests; +# +cd /Volumes/data/sonar/sonarqube/server/sonar-search +mvn clean package install -DskipTests; +# +# cd /Volumes/data/sonar/sonarqube/sonar-application +# mvn clean package install -DskipTests; + +cd /Volumes/data/sonar/sonarqube/sonar-start; +mvn clean package install -DskipTests; + +cd target; +unzip sonarqube-4.5-SNAPSHOT.zip; +cd sonarqube-4.5-SNAPSHOT; +java -jar start.jar --debug
\ No newline at end of file diff --git a/sonar-start/src/main/java/org/sonar/start/StartServer.java b/sonar-start/src/main/java/org/sonar/start/StartServer.java index e28cb51df99..2eff7ddce0c 100644 --- a/sonar-start/src/main/java/org/sonar/start/StartServer.java +++ b/sonar-start/src/main/java/org/sonar/start/StartServer.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.sonar.process.Monitor; import org.sonar.process.NetworkUtils; import org.sonar.process.ProcessWrapper; @@ -32,8 +33,6 @@ import java.net.URISyntaxException; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; public final class StartServer { @@ -41,21 +40,23 @@ public final class StartServer { public final static String SONAR_HOME = "SONAR_HOME"; + private Monitor monitor; + private final Env env; private final String esPort; private final Map<String, String> properties; private final Thread shutdownHook; - private ExecutorService executor; private ProcessWrapper elasticsearch; private ProcessWrapper sonarqube; public StartServer(Env env, String... args) throws IOException { this.env = env; - this.executor = Executors.newFixedThreadPool(2); this.esPort = Integer.toString(NetworkUtils.freePort()); this.properties = new HashMap<String, String>(); + monitor = new Monitor(); + if (Arrays.binarySearch(args, "--debug") > -1) { properties.put("esDebug", "true"); } @@ -63,23 +64,33 @@ public final class StartServer { shutdownHook = new Thread(new Runnable() { @Override public void run() { - StartServer.this.stop(); + System.out.println("Before"); + stop(); + System.out.println("After"); } }); Runtime.getRuntime().addShutdownHook(shutdownHook); } + public void shutdown() { + Runtime.getRuntime().removeShutdownHook(shutdownHook); + this.stop(); + } + public void stop() { LOGGER.info("Shutting down all node services"); - Runtime.getRuntime().removeShutdownHook(shutdownHook); - if (elasticsearch != null) { - LOGGER.info("Shutting down ES service"); - elasticsearch.stop(); - } - if (sonarqube != null) { - LOGGER.info("Shutting down SQ service"); - sonarqube.stop(); + terminateAndWait(elasticsearch); + terminateAndWait(sonarqube); + + //TODO should not have to explicitly exit... + System.exit(1); + } + + private void terminateAndWait(ProcessWrapper process) { + if (process != null && process.getThread() != null) { + LOGGER.info("Shutting down {} service", process.getName()); + process.terminate(); } } @@ -98,13 +109,23 @@ public final class StartServer { "ES", env.rootDir().getAbsolutePath() + "/lib/search/sonar-search-4.5-SNAPSHOT.jar"); - while (!elasticsearch.isReady()) { - LOGGER.info("Waiting for ES"); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + monitor.registerProcess(elasticsearch); +// +// while (!elasticsearch.isReady()) { +// LOGGER.info("Waiting for ES"); +// try { +// Thread.sleep(1000); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// } + + + monitor.start(); + try { + monitor.join(); + } catch (InterruptedException e) { + e.printStackTrace(); } // Start SQ @@ -124,14 +145,14 @@ public final class StartServer { // } catch (InterruptedException e) { // LOGGER.warn("Shutting down the node..."); // } - // shutdown(); + shutdown(); } public static void main(String... args) throws InterruptedException, IOException, URISyntaxException { - String home = System.getenv(SONAR_HOME); - //String home = "/Volumes/data/sonar/sonarqube/sonar-start/target/sonarqube-4.5-SNAPSHOT"; + //String home = System.getenv(SONAR_HOME); + String home = "/Volumes/data/sonar/sonarqube/sonar-start/target/sonarqube-4.5-SNAPSHOT"; //Check if we have a SONAR_HOME if (StringUtils.isEmpty(home)) { diff --git a/sonar-start/src/main/resources/logback.xml b/sonar-start/src/main/resources/logback.xml index d873268fc12..7c1fb3320c2 100644 --- a/sonar-start/src/main/resources/logback.xml +++ b/sonar-start/src/main/resources/logback.xml @@ -10,9 +10,9 @@ <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/> <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <File>${SONAR_HOME}/logs/sonar.log</File> + <File>logs/sonar.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> - <param name="FileNamePattern" value="${SONAR_HOME}/logs/sonar.%i.log"/> + <param name="FileNamePattern" value="logs/sonar.%i.log"/> <param name="MinIndex" value="1"/> <param name="MaxIndex" value="3"/> </rollingPolicy> @@ -35,14 +35,10 @@ </encoder> </appender> - <logger name="console" additivity="false"> - <level value="INFO"/> - <appender-ref ref="CONSOLE"/> - </logger> - <root> - <level value="INFO"/> + <level value="DEBUG"/> <appender-ref ref="CONSOLE"/> + <appender-ref ref="LOGFILE"/> </root> </configuration> diff --git a/sonar-start/start.sh b/sonar-start/start.sh index 80bcb9094f4..80bcb9094f4 100755..100644 --- a/sonar-start/start.sh +++ b/sonar-start/start.sh |