]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4898 fix reentrant master termination
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 30 Jul 2014 15:05:26 +0000 (17:05 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 30 Jul 2014 15:05:26 +0000 (17:05 +0200)
sonar-application/src/main/java/org/sonar/application/App.java

index 5d105718b19c54648ee1b64825be7b8e8ae72a05..642884d5cf4b318618d5a844ec48a4a6c61c2106 100644 (file)
@@ -31,7 +31,7 @@ public class App implements ProcessMXBean {
 
   private final Installation installation;
 
-  private final Monitor monitor = new Monitor();
+  private Monitor monitor = new Monitor();
   private ProcessWrapper elasticsearch;
   private ProcessWrapper server;
 
@@ -103,21 +103,26 @@ public class App implements ProcessMXBean {
   @Override
   public void terminate() {
     LoggerFactory.getLogger(App.class).info("Stopping");
-    if (monitor.isAlive()) {
+    if (monitor != null && monitor.isAlive()) {
       monitor.terminate();
       monitor.interrupt();
+      monitor = null;
     }
     if (server != null) {
       server.terminate();
+      server = null;
     }
     if (elasticsearch != null) {
       elasticsearch.terminate();
+      elasticsearch = null;
     }
   }
 
   public static void main(String[] args) throws Exception {
     Installation installation = new Installation();
     new AppLogging().configure(installation);
-    new App(installation).start();
+    App app = new App(installation);
+    app.start();
+    System.exit(0);
   }
 }