summaryrefslogtreecommitdiffstats
path: root/sonar-start
diff options
context:
space:
mode:
authorStephane Gamard <stephane.gamard@searchbox.com>2014-07-18 10:48:39 +0200
committerStephane Gamard <stephane.gamard@searchbox.com>2014-07-18 11:28:00 +0200
commit76e842ab44f6bb0059be659e6c057af98dcf61a7 (patch)
treebfcf30e28ca316beb4e0cafa384d0791d2d75db9 /sonar-start
parent70dabb8a6d7261185e3f9895361e1ef72559fdbd (diff)
downloadsonarqube-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-xsonar-start/play.sh18
-rw-r--r--sonar-start/src/main/java/org/sonar/start/StartServer.java67
-rw-r--r--sonar-start/src/main/resources/logback.xml12
-rw-r--r--[-rwxr-xr-x]sonar-start/start.sh0
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