summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java')
-rw-r--r--core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java35
1 files changed, 27 insertions, 8 deletions
diff --git a/core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java b/core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java
index 8298c0c127..f95cc1f6f6 100644
--- a/core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java
+++ b/core/src/main/java/org/elasticsearch/common/settings/SettingsModule.java
@@ -24,6 +24,7 @@ import org.elasticsearch.common.inject.AbstractModule;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.function.Predicate;
/**
* A module that binds the provided settings to the {@link Settings} interface.
@@ -54,16 +55,13 @@ public class SettingsModule extends AbstractModule {
final ClusterSettings clusterSettings = new ClusterSettings(settings, new HashSet<>(this.clusterSettings.values()));
// by now we are fully configured, lets check node level settings for unregistered index settings
indexScopedSettings.validate(settings.filter(IndexScopedSettings.INDEX_SETTINGS_KEY_PREDICATE));
- // we can't call this method yet since we have not all node level settings registered.
- // yet we can validate the ones we have registered to not have invalid values. this is better than nothing
- // and progress over perfection and we fail as soon as possible.
- // clusterSettings.validate(settings.filter(IndexScopedSettings.INDEX_SETTINGS_KEY_PREDICATE.negate()));
- for (Map.Entry<String, String> entry : settings.filter(IndexScopedSettings.INDEX_SETTINGS_KEY_PREDICATE.negate()).getAsMap().entrySet()) {
- if (clusterSettings.get(entry.getKey()) != null) {
- clusterSettings.validate(entry.getKey(), settings);
- }
+ Predicate<String> noIndexSettingPredicate = IndexScopedSettings.INDEX_SETTINGS_KEY_PREDICATE.negate();
+ Predicate<String> noTribePredicate = (s) -> s.startsWith("tribe.") == false;
+ for (Map.Entry<String, String> entry : settings.filter(noTribePredicate.and(noIndexSettingPredicate)).getAsMap().entrySet()) {
+ validateClusterSetting(clusterSettings, entry.getKey(), settings);
}
+ validateTribeSettings(settings, clusterSettings);
bind(Settings.class).toInstance(settings);
bind(SettingsFilter.class).toInstance(settingsFilter);
@@ -88,4 +86,25 @@ public class SettingsModule extends AbstractModule {
}
}
+ public void validateTribeSettings(Settings settings, ClusterSettings clusterSettings) {
+ Map<String, Settings> groups = settings.getGroups("tribe.", true);
+ for (Map.Entry<String, Settings> tribeSettings : groups.entrySet()) {
+ for (Map.Entry<String, String> entry : tribeSettings.getValue().getAsMap().entrySet()) {
+ validateClusterSetting(clusterSettings, entry.getKey(), tribeSettings.getValue());
+ }
+ }
+ }
+
+ private final void validateClusterSetting(ClusterSettings clusterSettings, String key, Settings settings) {
+ // we can't call this method yet since we have not all node level settings registered.
+ // yet we can validate the ones we have registered to not have invalid values. this is better than nothing
+ // and progress over perfection and we fail as soon as possible.
+ // clusterSettings.validate(settings.filter(IndexScopedSettings.INDEX_SETTINGS_KEY_PREDICATE.negate()));
+ if (clusterSettings.get(key) != null) {
+ clusterSettings.validate(key, settings);
+ } else if (AbstractScopedSettings.isValidKey(key) == false) {
+ throw new IllegalArgumentException("illegal settings key: [" + key + "]");
+ }
+ }
+
}