@Override protected void masterOperation(final ClusterUpdateSettingsRequest request, final ClusterState state, final ActionListener<ClusterUpdateSettingsResponse> listener) { final SettingsUpdater updater = new SettingsUpdater(clusterSettings); clusterService.submitStateUpdateTask("cluster_update_settings", new AckedClusterStateUpdateTask<ClusterUpdateSettingsResponse>(Priority.IMMEDIATE, request, listener) {
@Override protected ClusterUpdateSettingsResponse newResponse(boolean acknowledged) { return new ClusterUpdateSettingsResponse(acknowledged, updater.getTransientUpdates(), updater.getPersistentUpdate()); }
@Override public ClusterState execute(final ClusterState currentState) { final ClusterState clusterState = updater.updateSettings( currentState, clusterSettings.upgradeSettings(request.transientSettings()), clusterSettings.upgradeSettings(request.persistentSettings()), logger); changed = clusterState != currentState; return clusterState; } });
/** * Partitions the settings into those that are known and valid versus those that are unknown or invalid. The resulting tuple contains * the known and valid settings in the first component and the unknown or invalid settings in the second component. Note that archived * settings contained in the settings to partition are included in the first component. * * @param settings the settings to partition * @param settingsType a string to identify the settings (for logging) * @param logger a logger to sending warnings to * @return the partitioned settings */ private Tuple<Settings, Settings> partitionKnownAndValidSettings( final Settings settings, final String settingsType, final Logger logger) { final Settings existingArchivedSettings = settings.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX)); final Settings settingsExcludingExistingArchivedSettings = settings.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX) == false); final Settings settingsWithUnknownOrInvalidArchived = clusterSettings.archiveUnknownOrInvalidSettings( settingsExcludingExistingArchivedSettings, e -> logUnknownSetting(settingsType, e, logger), (e, ex) -> logInvalidSetting(settingsType, e, ex, logger)); return Tuple.tuple( Settings.builder() .put(settingsWithUnknownOrInvalidArchived.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX) == false)) .put(existingArchivedSettings) .build(), settingsWithUnknownOrInvalidArchived.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX))); }
partitionKnownAndValidSettings(currentState.metaData().transientSettings(), "transient", logger); final Settings knownAndValidTransientSettings = partitionedTransientSettings.v1(); final Settings unknownOrInvalidTransientSettings = partitionedTransientSettings.v2(); partitionKnownAndValidSettings(currentState.metaData().persistentSettings(), "persistent", logger); final Settings knownAndValidPersistentSettings = partitionedPersistentSettings.v1(); final Settings unknownOrInvalidPersistentSettings = partitionedPersistentSettings.v2();
/** * Partitions the settings into those that are known and valid versus those that are unknown or invalid. The resulting tuple contains * the known and valid settings in the first component and the unknown or invalid settings in the second component. Note that archived * settings contained in the settings to partition are included in the first component. * * @param settings the settings to partition * @param settingsType a string to identify the settings (for logging) * @param logger a logger to sending warnings to * @return the partitioned settings */ private Tuple<Settings, Settings> partitionKnownAndValidSettings( final Settings settings, final String settingsType, final Logger logger) { final Settings existingArchivedSettings = settings.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX)); final Settings settingsExcludingExistingArchivedSettings = settings.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX) == false); final Settings settingsWithUnknownOrInvalidArchived = clusterSettings.archiveUnknownOrInvalidSettings( settingsExcludingExistingArchivedSettings, e -> logUnknownSetting(settingsType, e, logger), (e, ex) -> logInvalidSetting(settingsType, e, ex, logger)); return Tuple.tuple( Settings.builder() .put(settingsWithUnknownOrInvalidArchived.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX) == false)) .put(existingArchivedSettings) .build(), settingsWithUnknownOrInvalidArchived.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX))); }
partitionKnownAndValidSettings(currentState.metaData().transientSettings(), "transient", logger); final Settings knownAndValidTransientSettings = partitionedTransientSettings.v1(); final Settings unknownOrInvalidTransientSettings = partitionedTransientSettings.v2(); partitionKnownAndValidSettings(currentState.metaData().persistentSettings(), "persistent", logger); final Settings knownAndValidPersistentSettings = partitionedPersistentSettings.v1(); final Settings unknownOrInvalidPersistentSettings = partitionedPersistentSettings.v2();
listener.onResponse(new ClusterUpdateSettingsResponse(updateSettingsAcked, updater.getTransientUpdates(), updater.getPersistentUpdate())); return;
/** * Partitions the settings into those that are known and valid versus those that are unknown or invalid. The resulting tuple contains * the known and valid settings in the first component and the unknown or invalid settings in the second component. Note that archived * settings contained in the settings to partition are included in the first component. * * @param settings the settings to partition * @param settingsType a string to identify the settings (for logging) * @param logger a logger to sending warnings to * @return the partitioned settings */ private Tuple<Settings, Settings> partitionKnownAndValidSettings( final Settings settings, final String settingsType, final Logger logger) { final Settings existingArchivedSettings = settings.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX)); final Settings settingsExcludingExistingArchivedSettings = settings.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX) == false); final Settings settingsWithUnknownOrInvalidArchived = clusterSettings.archiveUnknownOrInvalidSettings( settingsExcludingExistingArchivedSettings, e -> logUnknownSetting(settingsType, e, logger), (e, ex) -> logInvalidSetting(settingsType, e, ex, logger)); return Tuple.tuple( Settings.builder() .put(settingsWithUnknownOrInvalidArchived.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX) == false)) .put(existingArchivedSettings) .build(), settingsWithUnknownOrInvalidArchived.filter(k -> k.startsWith(ARCHIVED_SETTINGS_PREFIX))); }
@Override public ClusterState execute(final ClusterState currentState) { ClusterState clusterState = updater.updateSettings(currentState, request.transientSettings(), request.persistentSettings()); changed = clusterState != currentState; return clusterState; } });
@Override protected void masterOperation(final ClusterUpdateSettingsRequest request, final ClusterState state, final ActionListener<ClusterUpdateSettingsResponse> listener) { final SettingsUpdater updater = new SettingsUpdater(clusterSettings); clusterService.submitStateUpdateTask("cluster_update_settings", new AckedClusterStateUpdateTask<ClusterUpdateSettingsResponse>(Priority.IMMEDIATE, request, listener) {
partitionKnownAndValidSettings(currentState.metaData().transientSettings(), "transient", logger); final Settings knownAndValidTransientSettings = partitionedTransientSettings.v1(); final Settings unknownOrInvalidTransientSettings = partitionedTransientSettings.v2(); partitionKnownAndValidSettings(currentState.metaData().persistentSettings(), "persistent", logger); final Settings knownAndValidPersistentSettings = partitionedPersistentSettings.v1(); final Settings unknownOrInvalidPersistentSettings = partitionedPersistentSettings.v2();
@Override protected ClusterUpdateSettingsResponse newResponse(boolean acknowledged) { return new ClusterUpdateSettingsResponse(acknowledged, updater.getTransientUpdates(), updater.getPersistentUpdate()); }
@Override public ClusterState execute(final ClusterState currentState) { ClusterState clusterState = updater.updateSettings(currentState, request.transientSettings(), request.persistentSettings(), logger); changed = clusterState != currentState; return clusterState; } });
@Override protected void masterOperation(final ClusterUpdateSettingsRequest request, final ClusterState state, final ActionListener<ClusterUpdateSettingsResponse> listener) { final SettingsUpdater updater = new SettingsUpdater(clusterSettings); clusterService.submitStateUpdateTask("cluster_update_settings", new AckedClusterStateUpdateTask<ClusterUpdateSettingsResponse>(Priority.IMMEDIATE, request, listener) {
@Override protected ClusterUpdateSettingsResponse newResponse(boolean acknowledged) { return new ClusterUpdateSettingsResponse(acknowledged, updater.getTransientUpdates(), updater.getPersistentUpdate()); }
@Override public ClusterState execute(final ClusterState currentState) { final ClusterState clusterState = updater.updateSettings( currentState, clusterSettings.upgradeSettings(request.transientSettings()), clusterSettings.upgradeSettings(request.persistentSettings()), logger); changed = clusterState != currentState; return clusterState; } });
@Override protected void masterOperation(final ClusterUpdateSettingsRequest request, final ClusterState state, final ActionListener<ClusterUpdateSettingsResponse> listener) { final SettingsUpdater updater = new SettingsUpdater(clusterSettings); clusterService.submitStateUpdateTask("cluster_update_settings", new AckedClusterStateUpdateTask<ClusterUpdateSettingsResponse>(Priority.IMMEDIATE, request, listener) {
@Override protected ClusterUpdateSettingsResponse newResponse(boolean acknowledged) { return new ClusterUpdateSettingsResponse(acknowledged, updater.getTransientUpdates(), updater.getPersistentUpdate()); }
listener.onResponse(new ClusterUpdateSettingsResponse(updateSettingsAcked, updater.getTransientUpdates(), updater.getPersistentUpdate())); return;