]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-15239 fix DCE App node not starting
authorPierre Guillot <50145663+pierre-guillot-sonarsource@users.noreply.github.com>
Tue, 10 Aug 2021 09:45:52 +0000 (11:45 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 11 Aug 2021 20:08:07 +0000 (20:08 +0000)
server/sonar-webserver-webapi/src/main/java/org/sonar/server/platform/ws/LivenessCheckerImpl.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/platform/ws/LivenessCheckerImplTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/platform/ws/SafeModeLivenessCheckerImplTest.java

index 0be2dd55e6ac8946dfe2600f3f1bf0411e2f2919..6c4fa0e11543c5ad39042ee65c20135772173396 100644 (file)
@@ -24,23 +24,31 @@ import org.sonar.server.health.DbConnectionNodeCheck;
 import org.sonar.server.health.EsStatusNodeCheck;
 import org.sonar.server.health.Health;
 import org.sonar.server.health.WebServerStatusNodeCheck;
-import org.sonar.server.platform.WebServer;
 
 public class LivenessCheckerImpl implements LivenessChecker {
 
-  private final WebServer webServer;
   private final DbConnectionNodeCheck dbConnectionNodeCheck;
   private final CeStatusNodeCheck ceStatusNodeCheck;
   private final EsStatusNodeCheck esStatusNodeCheck;
   private final WebServerStatusNodeCheck webServerStatusNodeCheck;
 
-  public LivenessCheckerImpl(WebServer webServer, DbConnectionNodeCheck dbConnectionNodeCheck,
+  public LivenessCheckerImpl(DbConnectionNodeCheck dbConnectionNodeCheck,
     WebServerStatusNodeCheck webServerStatusNodeCheck, CeStatusNodeCheck ceStatusNodeCheck, EsStatusNodeCheck esStatusNodeCheck) {
-    this.webServer = webServer;
     this.dbConnectionNodeCheck = dbConnectionNodeCheck;
+    this.webServerStatusNodeCheck = webServerStatusNodeCheck;
     this.ceStatusNodeCheck = ceStatusNodeCheck;
     this.esStatusNodeCheck = esStatusNodeCheck;
+  }
+
+  /**
+   * Constructor used by Pico Container on non-standalone mode, so on a DCE App Node, where EsStatusNodeCheck is not available
+   */
+  public LivenessCheckerImpl(DbConnectionNodeCheck dbConnectionNodeCheck,
+    WebServerStatusNodeCheck webServerStatusNodeCheck, CeStatusNodeCheck ceStatusNodeCheck) {
+    this.dbConnectionNodeCheck = dbConnectionNodeCheck;
     this.webServerStatusNodeCheck = webServerStatusNodeCheck;
+    this.ceStatusNodeCheck = ceStatusNodeCheck;
+    this.esStatusNodeCheck = null;
   }
 
   public boolean liveness() {
@@ -57,7 +65,7 @@ public class LivenessCheckerImpl implements LivenessChecker {
       return false;
     }
 
-    if (webServer.isStandalone() && Health.Status.RED.equals(esStatusNodeCheck.check().getStatus())) {
+    if (esStatusNodeCheck != null && Health.Status.RED.equals(esStatusNodeCheck.check().getStatus())) {
       return false;
     }
 
index 75e73cb96388056596ece77addf3e5c9a1b8f45a..5ca61ee0699e02ec531005df21ba6cfe97c6befd 100644 (file)
@@ -26,7 +26,6 @@ import org.sonar.server.health.DbConnectionNodeCheck;
 import org.sonar.server.health.EsStatusNodeCheck;
 import org.sonar.server.health.Health;
 import org.sonar.server.health.WebServerStatusNodeCheck;
-import org.sonar.server.platform.WebServer;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -35,16 +34,16 @@ public class LivenessCheckerImplTest {
 
   public static final Health RED = Health.newHealthCheckBuilder().setStatus(Health.Status.RED).build();
 
-  private final WebServer webServer = mock(WebServer.class);
   private final DbConnectionNodeCheck dbConnectionNodeCheck = mock(DbConnectionNodeCheck.class);
   private final WebServerStatusNodeCheck webServerStatusNodeCheck = mock(WebServerStatusNodeCheck.class);
   private final CeStatusNodeCheck ceStatusNodeCheck = mock(CeStatusNodeCheck.class);
   private final EsStatusNodeCheck esStatusNodeCheck = mock(EsStatusNodeCheck.class);
 
-  LivenessCheckerImpl underTest = new LivenessCheckerImpl(webServer, dbConnectionNodeCheck, webServerStatusNodeCheck, ceStatusNodeCheck, esStatusNodeCheck);
+  LivenessCheckerImpl underTest = new LivenessCheckerImpl(dbConnectionNodeCheck, webServerStatusNodeCheck, ceStatusNodeCheck, esStatusNodeCheck);
+  LivenessCheckerImpl underTestDCE = new LivenessCheckerImpl(dbConnectionNodeCheck, webServerStatusNodeCheck, ceStatusNodeCheck);
 
   @Test
-  public void fail_when_db_connexion_check_fail() {
+  public void fail_when_db_connection_check_fail() {
     when(dbConnectionNodeCheck.check()).thenReturn(RED);
 
     Assertions.assertThat(underTest.liveness()).isFalse();
@@ -68,25 +67,31 @@ public class LivenessCheckerImplTest {
   }
 
   @Test
-  public void dont_fail_when_not_standalone_but_es_check_fail() {
+  public void fail_when_es_check_fail() {
     when(dbConnectionNodeCheck.check()).thenReturn(Health.GREEN);
     when(webServerStatusNodeCheck.check()).thenReturn(Health.GREEN);
     when(ceStatusNodeCheck.check()).thenReturn(Health.GREEN);
-    when(webServer.isStandalone()).thenReturn(false);
     when(esStatusNodeCheck.check()).thenReturn(RED);
 
-    Assertions.assertThat(underTest.liveness()).isTrue();
+    Assertions.assertThat(underTest.liveness()).isFalse();
   }
 
   @Test
-  public void fail_when_not_dce_and_es_check_fail() {
+  public void success_when_db_web_ce_es_succeed() {
     when(dbConnectionNodeCheck.check()).thenReturn(Health.GREEN);
     when(webServerStatusNodeCheck.check()).thenReturn(Health.GREEN);
     when(ceStatusNodeCheck.check()).thenReturn(Health.GREEN);
-    when(webServer.isStandalone()).thenReturn(true);
-    when(esStatusNodeCheck.check()).thenReturn(RED);
+    when(esStatusNodeCheck.check()).thenReturn(Health.GREEN);
 
-    Assertions.assertThat(underTest.liveness()).isFalse();
+    Assertions.assertThat(underTest.liveness()).isTrue();
   }
 
+  @Test
+  public void success_when_db_web_ce_succeed() {
+    when(dbConnectionNodeCheck.check()).thenReturn(Health.GREEN);
+    when(webServerStatusNodeCheck.check()).thenReturn(Health.GREEN);
+    when(ceStatusNodeCheck.check()).thenReturn(Health.GREEN);
+
+    Assertions.assertThat(underTestDCE.liveness()).isTrue();
+  }
 }
index 06cc8c7171ec4a0d3830f8af551f972741110fcb..3b36e247f95060d2e13324b607dc9802dad94820 100644 (file)
@@ -34,14 +34,14 @@ public class SafeModeLivenessCheckerImplTest {
   private final SafeModeLivenessCheckerImpl underTest = new SafeModeLivenessCheckerImpl(dbConnectionNodeCheck);
 
   @Test
-  public void fail_when_db_connexion_check_fail() {
+  public void fail_when_db_connection_check_fail() {
     when(dbConnectionNodeCheck.check()).thenReturn(RED);
 
     Assertions.assertThat(underTest.liveness()).isFalse();
   }
 
   @Test
-  public void succeed_when_db_connexion_check_success() {
+  public void succeed_when_db_connection_check_success() {
     when(dbConnectionNodeCheck.check()).thenReturn(Health.GREEN);
 
     Assertions.assertThat(underTest.liveness()).isTrue();