Skip to content

Commit b0f87ca

Browse files
committed
Do not set path.data in environment if not set
When preparing the final settings in the environment, we unconditionally set path.data even if path.data was not explicitly set. This confounds detection for whether or not path.data was explicitly set, and this is trappy. This commit adds logic to only set path.data in the final settings if path.data was explicitly set, and provides a test case that fails without this logic. Relates #24132
1 parent 8be10b8 commit b0f87ca

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

core/src/main/java/org/elasticsearch/env/Environment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ public Environment(Settings settings) {
183183

184184
Settings.Builder finalSettings = Settings.builder().put(settings);
185185
finalSettings.put(PATH_HOME_SETTING.getKey(), homeFile);
186-
finalSettings.putArray(PATH_DATA_SETTING.getKey(), dataPaths);
186+
if (PATH_DATA_SETTING.exists(settings)) {
187+
finalSettings.putArray(PATH_DATA_SETTING.getKey(), dataPaths);
188+
}
187189
finalSettings.put(PATH_LOGS_SETTING.getKey(), logsFile);
188190
this.settings = finalSettings.build();
189191

core/src/test/java/org/elasticsearch/env/EnvironmentTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,19 @@ public void testPathDataWhenNotSet() {
102102
assertThat(environment.dataFiles(), equalTo(new Path[]{pathHome.resolve("data")}));
103103
}
104104

105+
public void testPathDataNotSetInEnvironmentIfNotSet() {
106+
final Path defaultPathData = createTempDir().toAbsolutePath();
107+
final Settings settings = Settings.builder()
108+
.put("path.home", createTempDir().toAbsolutePath())
109+
.put("default.path.data", defaultPathData)
110+
.build();
111+
assertFalse(Environment.PATH_DATA_SETTING.exists(settings));
112+
assertTrue(Environment.DEFAULT_PATH_DATA_SETTING.exists(settings));
113+
final Environment environment = new Environment(settings);
114+
assertFalse(Environment.PATH_DATA_SETTING.exists(environment.settings()));
115+
assertTrue(Environment.DEFAULT_PATH_DATA_SETTING.exists(environment.settings()));
116+
}
117+
105118
public void testDefaultPathLogs() {
106119
final Path defaultPathLogs = createTempDir().toAbsolutePath();
107120
final Settings settings = Settings.builder()

0 commit comments

Comments
 (0)