Переглянути джерело

Revert "Move the MDP error check into Environment (#72498)" (#78945)

This reverts commit 8602688f86b6a6301adc9af2d48a17e740ce15a5.

The revert was conflict free.

relates #78525
relates #71205
Ryan Ernst 4 роки тому
батько
коміт
d7e6d9ef84

+ 10 - 5
server/src/main/java/org/elasticsearch/env/Environment.java

@@ -102,11 +102,7 @@ public class Environment {
         pluginsFile = homeFile.resolve("plugins");
 
         if (PATH_DATA_SETTING.exists(settings)) {
-            String rawDataPath = PATH_DATA_SETTING.get(settings);
-            if (rawDataPath.startsWith("[")) {
-                throw new IllegalArgumentException("[path.data] is a list. Specify as a string value.");
-            }
-            dataFile = PathUtils.get(rawDataPath).toAbsolutePath().normalize();
+            dataFile = PathUtils.get(PATH_DATA_SETTING.get(settings)).toAbsolutePath().normalize();
         } else {
             dataFile = homeFile.resolve("data");
         }
@@ -297,6 +293,15 @@ public class Environment {
         }
     }
 
+    /** Returns true if the data path is a list, false otherwise */
+    public static boolean dataPathUsesList(Settings settings) {
+        if (settings.hasValue(PATH_DATA_SETTING.getKey()) == false) {
+            return false;
+        }
+        String rawDataPath = settings.get(PATH_DATA_SETTING.getKey());
+        return rawDataPath.startsWith("[");
+    }
+
     public static FileStore getFileStore(final Path path) throws IOException {
         return new ESFileStore(Files.getFileStore(path));
     }

+ 4 - 0
server/src/main/java/org/elasticsearch/node/Node.java

@@ -327,6 +327,10 @@ public class Node implements Closeable {
                 );
             }
 
+            if (Environment.dataPathUsesList(tmpSettings)) {
+                throw new IllegalArgumentException("[path.data] is a list. Specify as a string value.");
+            }
+
             if (logger.isDebugEnabled()) {
                 logger.debug("using config [{}], data [{}], logs [{}], plugins [{}]",
                     initialEnvironment.configFile(), initialEnvironment.dataFile(),

+ 5 - 22
server/src/test/java/org/elasticsearch/env/EnvironmentTests.java

@@ -23,6 +23,7 @@ import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.CoreMatchers.startsWith;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.is;
 
 /**
  * Simple unit-tests for Environment.java
@@ -157,37 +158,19 @@ public class EnvironmentTests extends ESTestCase {
     }
 
     public void testSingleDataPathListCheck() {
-        Path homeDir = createTempDir();
         {
-            final Settings settings = Settings.builder()
-                .put(Environment.PATH_HOME_SETTING.getKey(), homeDir).build();
-            Environment env = new Environment(settings, null, createTempDir());
-            assertThat(env.dataFile(), equalTo(homeDir.resolve("data")));
+            final Settings settings = Settings.builder().build();
+            assertThat(Environment.dataPathUsesList(settings), is(false));
         }
         {
             final Settings settings = Settings.builder()
-                .put(Environment.PATH_HOME_SETTING.getKey(), homeDir)
                 .putList(Environment.PATH_DATA_SETTING.getKey(), createTempDir().toString(), createTempDir().toString()).build();
-            IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () ->
-                new Environment(settings, null, createTempDir()));
-            assertThat(e.getMessage(), startsWith("[path.data] is a list"));
+            assertThat(Environment.dataPathUsesList(settings), is(true));
         }
         {
             final Settings settings = Settings.builder()
-                .put(Environment.PATH_HOME_SETTING.getKey(), homeDir)
                 .putList(Environment.PATH_DATA_SETTING.getKey(), createTempDir().toString()).build();
-            IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () ->
-                new Environment(settings, null, createTempDir()));
-            assertThat(e.getMessage(), startsWith("[path.data] is a list"));
-        }
-        {
-            // also check as if the data was munged into a string already in settings
-            final Settings settings = Settings.builder()
-                .put(Environment.PATH_HOME_SETTING.getKey(), homeDir)
-                .put(Environment.PATH_DATA_SETTING.getKey(), "[" + createTempDir().toString() + "]").build();
-            IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () ->
-                new Environment(settings, null, createTempDir()));
-            assertThat(e.getMessage(), startsWith("[path.data] is a list"));
+            assertThat(Environment.dataPathUsesList(settings), is(true));
         }
     }