]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-12686 use node.store.allow_mmap instead of node.store.allow_mmapfs
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 9 Jan 2020 11:21:04 +0000 (12:21 +0100)
committersonartech <sonartech@sonarsource.com>
Thu, 5 Nov 2020 20:06:21 +0000 (20:06 +0000)
node.store.allow_mmapfs was deprecated and is now dropped in 7.5.1

server/sonar-main/src/main/java/org/sonar/application/es/EsSettings.java
server/sonar-main/src/test/java/org/sonar/application/es/EsSettingsTest.java

index db4fd0a90f7847bb41b241a273b7c70b92f29b19..a867b3df4082bed5da704b1ab468249f81d1f712 100644 (file)
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.UUID;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.sonar.process.MessageException;
 import org.sonar.process.Props;
 import org.sonar.process.System2;
 
@@ -45,7 +46,7 @@ public class EsSettings {
   private static final Logger LOGGER = LoggerFactory.getLogger(EsSettings.class);
   private static final String STANDALONE_NODE_NAME = "sonarqube";
   private static final String SECCOMP_PROPERTY = "bootstrap.system_call_filter";
-  private static final String ALLOW_MMAP = "node.store.allow_mmapfs";
+  private static final String ALLOW_MMAP = "node.store.allow_mmap";
 
   private final Props props;
   private final EsInstallation fileSystem;
@@ -153,7 +154,10 @@ public class EsSettings {
       builder.put(SECCOMP_PROPERTY, "false");
     }
 
-    // to be used with HA QA, where we can't easily set mmap size when running with docker.
+    if (props.value("sonar.search.javaAdditionalOpts", "").contains("-Dnode.store.allow_mmapfs=false")) {
+      throw new MessageException("Property 'node.store.allow_mmapfs' is no longer supported. Use 'node.store.allow_mmap' instead.");
+    }
+
     if (props.value("sonar.search.javaAdditionalOpts", "").contains("-D" + ALLOW_MMAP + "=false")) {
       builder.put(ALLOW_MMAP, "false");
     }
index 12c8d55db7ea78924d32d4e33e5dbca576336e5d..7717edd8f1485df0cb3b9a37274cc1bce5defaed 100644 (file)
@@ -21,6 +21,9 @@ package org.sonar.application.es;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import com.google.common.collect.ImmutableSet;
+import com.tngtech.java.junit.dataprovider.DataProvider;
+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.Map;
@@ -31,8 +34,10 @@ 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.application.logging.ListAppender;
 import org.sonar.core.extension.ServiceLoaderWrapper;
+import org.sonar.process.MessageException;
 import org.sonar.process.ProcessProperties;
 import org.sonar.process.ProcessProperties.Property;
 import org.sonar.process.Props;
@@ -40,6 +45,7 @@ import org.sonar.process.System2;
 
 import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.sonar.process.ProcessProperties.Property.CLUSTER_NAME;
@@ -55,6 +61,7 @@ import static org.sonar.process.ProcessProperties.Property.SEARCH_INITIAL_STATE_
 import static org.sonar.process.ProcessProperties.Property.SEARCH_MINIMUM_MASTER_NODES;
 import static org.sonar.process.ProcessProperties.Property.SEARCH_PORT;
 
+@RunWith(DataProviderRunner.class)
 public class EsSettingsTest {
 
   private static final boolean CLUSTER_ENABLED = true;
@@ -332,10 +339,30 @@ public class EsSettingsTest {
   @Test
   public void disable_mmap_if_configured_in_search_additional_props() throws Exception {
     Props props = minProps(CLUSTER_DISABLED);
-    props.set("sonar.search.javaAdditionalOpts", "-Dnode.store.allow_mmapfs=false");
+    props.set("sonar.search.javaAdditionalOpts", "-Dnode.store.allow_mmap=false");
     Map<String, String> settings = new EsSettings(props, new EsInstallation(props), system).build();
 
-    assertThat(settings.get("node.store.allow_mmapfs")).isEqualTo("false");
+    assertThat(settings).containsEntry("node.store.allow_mmap", "false");
+  }
+
+  @Test
+  @UseDataProvider("clusterEnabledOrNot")
+  public void throw_exception_if_old_mmap_property_is_used(boolean clusterEnabled) throws Exception {
+    Props props = minProps(clusterEnabled);
+    props.set("sonar.search.javaAdditionalOpts", "-Dnode.store.allow_mmapfs=false");
+    EsSettings settings = new EsSettings(props, new EsInstallation(props), system);
+
+    assertThatThrownBy(settings::build)
+      .isInstanceOf(MessageException.class)
+      .hasMessage("Property 'node.store.allow_mmapfs' is no longer supported. Use 'node.store.allow_mmap' instead.");
+  }
+
+  @DataProvider
+  public static Object[][] clusterEnabledOrNot() {
+    return new Object[][] {
+      {false},
+      {true}
+    };
   }
 
   private Props minProps(boolean cluster) throws IOException {