mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-09 14:34:43 +00:00
predicate -> consumer
This commit is contained in:
parent
c9d7c92243
commit
d4e7bd2cc3
@ -155,7 +155,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
||||
* Note: Only settings registered in {@link org.elasticsearch.cluster.ClusterModule} can be changed dynamically.
|
||||
* </p>
|
||||
*/
|
||||
public synchronized <T> void addSettingsUpdateConsumer(Setting<T> setting, Consumer<T> consumer, Predicate<T> predicate) {
|
||||
public synchronized <T> void addSettingsUpdateConsumer(Setting<T> setting, Consumer<T> consumer, Consumer<T> predicate) {
|
||||
if (setting != get(setting.getKey())) {
|
||||
throw new IllegalArgumentException("Setting is not registered for key [" + setting.getKey() + "]");
|
||||
}
|
||||
@ -167,6 +167,8 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
||||
* <p>
|
||||
* Note: Only settings registered in {@link org.elasticsearch.cluster.ClusterModule} can be changed dynamically.
|
||||
* </p>
|
||||
* This method registers a compound updater that is useful if two settings are depending on each other. The consumer is always provided
|
||||
* with both values even if only one of the two changes.
|
||||
*/
|
||||
public synchronized <A, B> void addSettingsUpdateConsumer(Setting<A> a, Setting<B> b, BiConsumer<A, B> consumer) {
|
||||
if (a != get(a.getKey())) {
|
||||
@ -185,7 +187,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
||||
* </p>
|
||||
*/
|
||||
public synchronized <T> void addSettingsUpdateConsumer(Setting<T> setting, Consumer<T> consumer) {
|
||||
addSettingsUpdateConsumer(setting, consumer, (s) -> true);
|
||||
addSettingsUpdateConsumer(setting, consumer, (s) -> {});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -238,7 +240,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a settings object that contains all clustersettings that are not
|
||||
* Returns a settings object that contains all settings that are not
|
||||
* already set in the given source. The diff contains either the default value for each
|
||||
* setting or the settings value in the given default settings.
|
||||
*/
|
||||
|
@ -150,10 +150,10 @@ public class Setting<T> extends ToXContentToBytes {
|
||||
}
|
||||
|
||||
AbstractScopedSettings.SettingUpdater newUpdater(Consumer<T> consumer, ESLogger logger, Settings settings) {
|
||||
return newUpdater(consumer, logger, settings, (s) -> true);
|
||||
return newUpdater(consumer, logger, settings, (s) -> {});
|
||||
}
|
||||
|
||||
AbstractScopedSettings.SettingUpdater newUpdater(Consumer<T> consumer, ESLogger logger, Settings settings, Predicate<T> accept) {
|
||||
AbstractScopedSettings.SettingUpdater newUpdater(Consumer<T> consumer, ESLogger logger, Settings settings, Consumer<T> accept) {
|
||||
if (isDynamic()) {
|
||||
return new Updater(consumer, logger, settings, accept);
|
||||
} else {
|
||||
@ -207,13 +207,13 @@ public class Setting<T> extends ToXContentToBytes {
|
||||
private class Updater implements AbstractScopedSettings.SettingUpdater {
|
||||
private final Consumer<T> consumer;
|
||||
private final ESLogger logger;
|
||||
private final Predicate<T> accept;
|
||||
private final Consumer<T> accept;
|
||||
private String value;
|
||||
private boolean commitPending;
|
||||
private String pendingValue;
|
||||
private T valueInstance;
|
||||
|
||||
public Updater(Consumer<T> consumer, ESLogger logger, Settings settings, Predicate<T> accept) {
|
||||
public Updater(Consumer<T> consumer, ESLogger logger, Settings settings, Consumer<T> accept) {
|
||||
this.consumer = consumer;
|
||||
this.logger = logger;
|
||||
value = getRaw(settings);
|
||||
@ -228,8 +228,10 @@ public class Setting<T> extends ToXContentToBytes {
|
||||
}
|
||||
if (value.equals(newValue) == false) {
|
||||
T inst = get(settings);
|
||||
if (accept.test(inst) == false) {
|
||||
throw new IllegalArgumentException("illegal value can't update [" + key + "] from [" + value + "] to [" + getRaw(settings) + "]");
|
||||
try {
|
||||
accept.accept(inst);
|
||||
} catch (Exception | AssertionError e) {
|
||||
throw new IllegalArgumentException("illegal value can't update [" + key + "] from [" + value + "] to [" + getRaw(settings) + "]", e);
|
||||
}
|
||||
pendingValue = newValue;
|
||||
valueInstance = inst;
|
||||
@ -325,7 +327,7 @@ public class Setting<T> extends ToXContentToBytes {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractScopedSettings.SettingUpdater newUpdater(Consumer<Settings> consumer, ESLogger logger, Settings settings, Predicate<Settings> accept) {
|
||||
public AbstractScopedSettings.SettingUpdater newUpdater(Consumer<Settings> consumer, ESLogger logger, Settings settings, Consumer<Settings> accept) {
|
||||
if (isDynamic() == false) {
|
||||
throw new IllegalStateException("setting [" + getKey() + "] is not dynamic");
|
||||
}
|
||||
@ -338,8 +340,10 @@ public class Setting<T> extends ToXContentToBytes {
|
||||
public boolean prepareApply(Settings settings) {
|
||||
Settings currentSettings = get(settings);
|
||||
if (currentSettings.equals(committedSettings) == false) {
|
||||
if (accept.test(currentSettings) == false) {
|
||||
throw new IllegalArgumentException("illegal value can't update [" + key + "] from [" + committedSettings.getAsMap() + "] to [" + currentSettings.getAsMap() + "]");
|
||||
try {
|
||||
accept.accept(currentSettings);
|
||||
} catch (Exception | AssertionError e) {
|
||||
throw new IllegalArgumentException("illegal value can't update [" + key + "] from [" + committedSettings.getAsMap() + "] to [" + currentSettings.getAsMap() + "]", e);
|
||||
}
|
||||
pendingSettings = currentSettings;
|
||||
return true;
|
||||
|
@ -178,7 +178,6 @@ public class ZenDiscovery extends AbstractLifecycleComponent<Discovery> implemen
|
||||
if (value > masterNodes) {
|
||||
throw new IllegalArgumentException("cannot set " + ElectMasterService.DISCOVERY_ZEN_MINIMUM_MASTER_NODES_SETTING.getKey() + " to more than the current master nodes count [" + masterNodes + "]");
|
||||
}
|
||||
return true;
|
||||
});
|
||||
clusterSettings.addSettingsUpdateConsumer(REJOIN_ON_MASTER_GONE_SETTING, this::setRejoingOnMasterGone);
|
||||
|
||||
|
@ -252,7 +252,7 @@ public class ThreadPool extends AbstractComponent {
|
||||
|
||||
public void setNodeSettingsService(ClusterSettings clusterSettings) {
|
||||
if(settingsListenerIsSet.compareAndSet(false, true)) {
|
||||
clusterSettings.addSettingsUpdateConsumer(THREADPOOL_GROUP_SETTING, this::updateSettings, (s) -> {validate(s.getAsGroups()); return true;});
|
||||
clusterSettings.addSettingsUpdateConsumer(THREADPOOL_GROUP_SETTING, this::updateSettings, (s) -> validate(s.getAsGroups()));
|
||||
} else {
|
||||
throw new IllegalStateException("the node settings listener was set more then once");
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public class ScopedSettingsTests extends ESTestCase {
|
||||
AtomicInteger consumer = new AtomicInteger();
|
||||
service.addSettingsUpdateConsumer(testSetting, consumer::set);
|
||||
AtomicInteger consumer2 = new AtomicInteger();
|
||||
service.addSettingsUpdateConsumer(testSetting2, consumer2::set, (s) -> s > 0);
|
||||
service.addSettingsUpdateConsumer(testSetting2, consumer2::set, (s) -> assertTrue(s > 0));
|
||||
|
||||
AtomicInteger aC = new AtomicInteger();
|
||||
AtomicInteger bC = new AtomicInteger();
|
||||
|
@ -209,7 +209,7 @@ public class SettingTests extends ESTestCase {
|
||||
assertTrue(setting.match("foo.bar.baz"));
|
||||
assertFalse(setting.match("foo.baz.bar"));
|
||||
|
||||
ClusterSettings.SettingUpdater predicateSettingUpdater = setting.newUpdater(ref::set, logger, Settings.EMPTY, (s) -> false);
|
||||
ClusterSettings.SettingUpdater predicateSettingUpdater = setting.newUpdater(ref::set, logger, Settings.EMPTY, (s) -> assertFalse(true));
|
||||
try {
|
||||
predicateSettingUpdater.prepareApply(Settings.builder().put("foo.bar.1.value", "1").put("foo.bar.2.value", "2").build());
|
||||
fail("not accepted");
|
||||
@ -273,10 +273,4 @@ public class SettingTests extends ESTestCase {
|
||||
assertEquals(1, c.b.intValue());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user