Skip to content

Commit efef46b

Browse files
committed
Fix bug in environment preparation not passing secure settings along.
Also, don't close secure settings (for now).
1 parent 28c1e5e commit efef46b

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

core/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,12 +338,13 @@ static void init(
338338

339339
INSTANCE.setup(true, environment);
340340

341+
/* TODO: close this once s3 repository doesn't try to read during repository construction
341342
try {
342343
// any secure settings must be read during node construction
343344
IOUtils.close(keystore);
344345
} catch (IOException e) {
345346
throw new BootstrapException(e);
346-
}
347+
}*/
347348

348349
INSTANCE.start();
349350

core/src/main/java/org/elasticsearch/node/InternalSettingsPreparer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public static Environment prepareEnvironment(Settings input, Terminal terminal,
8989
initializeSettings(output, input, true, properties);
9090
Environment environment = new Environment(output.build());
9191

92+
output = Settings.builder(); // start with a fresh output
9293
boolean settingsFileFound = false;
9394
Set<String> foundSuffixes = new HashSet<>();
9495
for (String allowedSuffix : ALLOWED_SUFFIXES) {

core/src/test/java/org/elasticsearch/node/internal/InternalSettingsPreparerTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121

2222
import org.elasticsearch.cli.MockTerminal;
2323
import org.elasticsearch.cluster.ClusterName;
24+
import org.elasticsearch.common.settings.MockSecureSettings;
25+
import org.elasticsearch.common.settings.SecureSetting;
26+
import org.elasticsearch.common.settings.SecureString;
27+
import org.elasticsearch.common.settings.Setting;
2428
import org.elasticsearch.common.settings.Settings;
2529
import org.elasticsearch.common.settings.SettingsException;
2630
import org.elasticsearch.env.Environment;
@@ -161,4 +165,13 @@ public void testMultipleSettingsFileNotAllowed() throws IOException {
161165
assertTrue(e.getMessage(), e.getMessage().contains(".properties"));
162166
}
163167
}
168+
169+
public void testSecureSettings() {
170+
MockSecureSettings secureSettings = new MockSecureSettings();
171+
secureSettings.setString("foo", "secret");
172+
Settings input = Settings.builder().put(baseEnvSettings).setSecureSettings(secureSettings).build();
173+
Environment env = InternalSettingsPreparer.prepareEnvironment(input, null);
174+
Setting<SecureString> fakeSetting = SecureSetting.secureString("foo", null, false);
175+
assertEquals("secret", fakeSetting.get(env.settings()).toString());
176+
}
164177
}

0 commit comments

Comments
 (0)