aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java10
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java6
-rw-r--r--server/sonar-main/src/main/java/org/sonar/application/command/EsJvmOptions.java15
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/command/EsJvmOptionsTest.java35
-rw-r--r--server/sonar-main/src/test/java/org/sonar/application/process/ProcessLauncherImplTest.java2
5 files changed, 50 insertions, 18 deletions
diff --git a/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java b/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java
index 0106b571634..b81ea66aa01 100644
--- a/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java
+++ b/server/sonar-db-core/src/test/java/org/sonar/db/CreateDb.java
@@ -26,6 +26,7 @@ import com.sonar.orchestrator.locator.Location;
import org.apache.commons.lang.StringUtils;
import java.io.File;
+import org.sonar.api.utils.log.Loggers;
import static com.sonar.orchestrator.container.Edition.COMMUNITY;
@@ -42,6 +43,7 @@ public class CreateDb {
builder.setSonarVersion(version);
}
builder.setOrchestratorProperty("orchestrator.workspaceDir", "build/it");
+ builder.setServerProperty("sonar.es.bootstrap.checks.disable", areEsBootStrapChecksDisabled() ? "true" : "false");
Orchestrator orchestrator = builder.build();
try {
@@ -50,4 +52,12 @@ public class CreateDb {
orchestrator.stop();
}
}
+
+ private static boolean areEsBootStrapChecksDisabled() {
+ boolean flag = "true".equalsIgnoreCase(System.getenv("CIRRUS_CI"));
+ if (flag) {
+ Loggers.get(CreateDb.class).info("Running on Cirrus: ES Bootstrap checks are disabled");
+ }
+ return flag;
+ }
}
diff --git a/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java b/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java
index 738cabf841d..7a17300a1ed 100644
--- a/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java
+++ b/server/sonar-main/src/main/java/org/sonar/application/command/CommandFactoryImpl.java
@@ -114,9 +114,7 @@ public class CommandFactoryImpl implements CommandFactory {
return new JavaCommand<EsJvmOptions>(ProcessId.ELASTICSEARCH, esInstallation.getHomeDirectory())
.setEsInstallation(esInstallation)
.setReadsArgumentsFromFile(false)
- .setJvmOptions(new EsJvmOptions(tempDir)
- .addFromMandatoryProperty(props, SEARCH_JAVA_OPTS.getKey())
- .addFromMandatoryProperty(props, SEARCH_JAVA_ADDITIONAL_OPTS.getKey())
+ .setJvmOptions(esInstallation.getEsJvmOptions()
.add("-Delasticsearch")
.add("-Des.path.home=" + esInstallation.getHomeDirectory().getAbsolutePath())
.add("-Des.path.conf=" + esInstallation.getConfDirectory().getAbsolutePath()))
@@ -137,7 +135,7 @@ public class CommandFactoryImpl implements CommandFactory {
esInstallation
.setLog4j2Properties(new EsLogging().createProperties(props, esInstallation.getLogDirectory()))
- .setEsJvmOptions(new EsJvmOptions(tempDir)
+ .setEsJvmOptions(new EsJvmOptions(props, tempDir)
.addFromMandatoryProperty(props, SEARCH_JAVA_OPTS.getKey())
.addFromMandatoryProperty(props, SEARCH_JAVA_ADDITIONAL_OPTS.getKey()))
.setEsYmlSettings(new EsYmlSettings(settingsMap))
diff --git a/server/sonar-main/src/main/java/org/sonar/application/command/EsJvmOptions.java b/server/sonar-main/src/main/java/org/sonar/application/command/EsJvmOptions.java
index 0b24606e27a..75dc84ef5b3 100644
--- a/server/sonar-main/src/main/java/org/sonar/application/command/EsJvmOptions.java
+++ b/server/sonar-main/src/main/java/org/sonar/application/command/EsJvmOptions.java
@@ -26,6 +26,7 @@ import java.nio.file.Files;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
+import org.sonar.process.Props;
import org.sonar.process.System2;
public class EsJvmOptions extends JvmOptions<EsJvmOptions> {
@@ -35,17 +36,17 @@ public class EsJvmOptions extends JvmOptions<EsJvmOptions> {
"# DO NOT EDIT THIS FILE\n" +
"\n";
- public EsJvmOptions(File tmpDir) {
- this(System2.INSTANCE, tmpDir);
+ public EsJvmOptions(Props props, File tmpDir) {
+ this(System2.INSTANCE, props, tmpDir);
}
- EsJvmOptions(System2 system2, File tmpDir) {
- super(mandatoryOptions(system2, tmpDir));
+ EsJvmOptions(System2 system2, Props props, File tmpDir) {
+ super(mandatoryOptions(system2, props, tmpDir));
}
// this basically writes down the content of jvm.options file distributed in vanilla Elasticsearch package
// with some changes to fit running bundled in SQ
- private static Map<String, String> mandatoryOptions(System2 system2, File tmpDir) {
+ private static Map<String, String> mandatoryOptions(System2 system2, Props props, File tmpDir) {
Map<String, String> res = new LinkedHashMap<>(16);
// GC configuration
res.put("-XX:+UseConcMarkSweepGC", "");
@@ -125,6 +126,10 @@ public class EsJvmOptions extends JvmOptions<EsJvmOptions> {
res.put("-XX:UseAVX=", "2");
}
+ if (!props.valueAsBoolean("sonar.es.bootstrap.checks.disable")) {
+ res.put("-Des.enforce.bootstrap.checks=", "true");
+ }
+
return res;
}
diff --git a/server/sonar-main/src/test/java/org/sonar/application/command/EsJvmOptionsTest.java b/server/sonar-main/src/test/java/org/sonar/application/command/EsJvmOptionsTest.java
index a90973c8d34..5c0d30e2987 100644
--- a/server/sonar-main/src/test/java/org/sonar/application/command/EsJvmOptionsTest.java
+++ b/server/sonar-main/src/test/java/org/sonar/application/command/EsJvmOptionsTest.java
@@ -24,11 +24,13 @@ import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
import java.io.File;
import java.io.IOException;
+import java.util.Properties;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
+import org.sonar.process.Props;
import org.sonar.process.System2;
import org.sonar.test.ExceptionCauseMatcher;
@@ -43,11 +45,13 @@ public class EsJvmOptionsTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
+ private Properties properties = new Properties();
+
@Test
@UseDataProvider("java8or11")
public void constructor_sets_mandatory_JVM_options_on_Java_8_and_11(System2 system2) throws IOException {
File tmpDir = temporaryFolder.newFolder();
- EsJvmOptions underTest = new EsJvmOptions(system2, tmpDir);
+ EsJvmOptions underTest = new EsJvmOptions(system2, new Props(properties), tmpDir);
assertThat(underTest.getAll())
.containsExactly(
@@ -68,7 +72,19 @@ public class EsJvmOptionsTest {
"-Dlog4j.shutdownHookEnabled=false",
"-Dlog4j2.disable.jmx=true",
"-Djava.io.tmpdir=" + tmpDir.getAbsolutePath(),
- "-XX:ErrorFile=../logs/es_hs_err_pid%p.log");
+ "-XX:ErrorFile=../logs/es_hs_err_pid%p.log",
+ "-Des.enforce.bootstrap.checks=true");
+ }
+
+ @Test
+ @UseDataProvider("java8or11")
+ public void constructor_does_not_force_boostrap_checks_if_sonarqube_property_is_true(System2 system2) throws IOException {
+ properties.put("sonar.es.bootstrap.checks.disable", "true");
+ File tmpDir = temporaryFolder.newFolder();
+ EsJvmOptions underTest = new EsJvmOptions(system2, new Props(properties), tmpDir);
+
+ assertThat(underTest.getAll())
+ .doesNotContain("-Des.enforce.bootstrap.checks=true");
}
@DataProvider
@@ -92,7 +108,7 @@ public class EsJvmOptionsTest {
when(java9.isJava10()).thenReturn(false);
File tmpDir = temporaryFolder.newFolder();
- EsJvmOptions underTest = new EsJvmOptions(java9, tmpDir);
+ EsJvmOptions underTest = new EsJvmOptions(java9, new Props(properties), tmpDir);
assertThat(underTest.getAll())
.containsExactly(
@@ -114,7 +130,8 @@ public class EsJvmOptionsTest {
"-Dlog4j2.disable.jmx=true",
"-Djava.io.tmpdir=" + tmpDir.getAbsolutePath(),
"-XX:ErrorFile=../logs/es_hs_err_pid%p.log",
- "-Djava.locale.providers=COMPAT");
+ "-Djava.locale.providers=COMPAT",
+ "-Des.enforce.bootstrap.checks=true");
}
@Test
@@ -124,7 +141,7 @@ public class EsJvmOptionsTest {
when(java10.isJava10()).thenReturn(true);
File tmpDir = temporaryFolder.newFolder();
- EsJvmOptions underTest = new EsJvmOptions(java10, tmpDir);
+ EsJvmOptions underTest = new EsJvmOptions(java10, new Props(properties), tmpDir);
assertThat(underTest.getAll())
.containsExactly(
@@ -146,7 +163,8 @@ public class EsJvmOptionsTest {
"-Dlog4j2.disable.jmx=true",
"-Djava.io.tmpdir=" + tmpDir.getAbsolutePath(),
"-XX:ErrorFile=../logs/es_hs_err_pid%p.log",
- "-XX:UseAVX=2");
+ "-XX:UseAVX=2",
+ "-Des.enforce.bootstrap.checks=true");
}
/**
@@ -156,7 +174,7 @@ public class EsJvmOptionsTest {
public void writeToJvmOptionFile_writes_all_JVM_options_to_file_with_warning_header() throws IOException {
File tmpDir = temporaryFolder.newFolder("with space");
File file = temporaryFolder.newFile();
- EsJvmOptions underTest = new EsJvmOptions(tmpDir)
+ EsJvmOptions underTest = new EsJvmOptions(new Props(properties), tmpDir)
.add("-foo")
.add("-bar");
@@ -186,6 +204,7 @@ public class EsJvmOptionsTest {
"-Dlog4j2.disable.jmx=true\n" +
"-Djava.io.tmpdir=" + tmpDir.getAbsolutePath() + "\n" +
"-XX:ErrorFile=../logs/es_hs_err_pid%p.log\n" +
+ "-Des.enforce.bootstrap.checks=true\n" +
"-foo\n" +
"-bar");
@@ -194,7 +213,7 @@ public class EsJvmOptionsTest {
@Test
public void writeToJvmOptionFile_throws_ISE_in_case_of_IOException() throws IOException {
File notAFile = temporaryFolder.newFolder();
- EsJvmOptions underTest = new EsJvmOptions(temporaryFolder.newFolder());
+ EsJvmOptions underTest = new EsJvmOptions(new Props(properties), temporaryFolder.newFolder());
expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("Cannot write Elasticsearch jvm options file");
diff --git a/server/sonar-main/src/test/java/org/sonar/application/process/ProcessLauncherImplTest.java b/server/sonar-main/src/test/java/org/sonar/application/process/ProcessLauncherImplTest.java
index 37d2d1df54f..dea81660225 100644
--- a/server/sonar-main/src/test/java/org/sonar/application/process/ProcessLauncherImplTest.java
+++ b/server/sonar-main/src/test/java/org/sonar/application/process/ProcessLauncherImplTest.java
@@ -212,7 +212,7 @@ public class ProcessLauncherImplTest {
.setPort(9001)
.setHost("localhost")
.setEsYmlSettings(new EsYmlSettings(new HashMap<>()))
- .setEsJvmOptions(new EsJvmOptions(tempFolder))
+ .setEsJvmOptions(new EsJvmOptions(new Props(new Properties()), tempFolder))
.setLog4j2Properties(new Properties());
}