From 7630301bd3e637c4929ec2fb37aa2904aebcff8c Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Mon, 11 Oct 2021 12:20:40 +0200 Subject: [PATCH] Introduce a Few Settings Singleton Instances (#78897) (#78908) This is mostly motivated by the ILM steps changes, that showed up as hot in profiling since instantiating a `Settings` instance turns out to be somewhat expensive. Also cleans up a couple of other spots and some duplication as well. --- .../client/indices/CreateIndexRequest.java | 4 +- .../client/indices/IndexTemplateMetadata.java | 2 +- .../indices/PutIndexTemplateRequest.java | 3 +- .../recovery/SimpleRecoveryIT.java | 2 +- .../put/PutRepositoryRequest.java | 3 +- .../ClusterUpdateSettingsRequest.java | 5 +- .../create/CreateSnapshotRequest.java | 3 +- .../restore/RestoreSnapshotRequest.java | 3 +- .../CreateIndexClusterStateUpdateRequest.java | 2 +- .../indices/create/CreateIndexRequest.java | 5 +- .../rollover/MetadataRolloverService.java | 4 +- .../settings/put/UpdateSettingsRequest.java | 3 +- .../template/put/PutIndexTemplateRequest.java | 3 +- .../cluster/metadata/IndexMetadata.java | 2 +- .../metadata/IndexTemplateMetadata.java | 2 +- .../cluster/metadata/Metadata.java | 4 +- .../MetadataCreateDataStreamService.java | 4 +- .../MetadataIndexTemplateService.java | 2 +- .../cluster/routing/allocation/DataTier.java | 46 ++++++++++++++++--- .../allocation/DiskThresholdMonitor.java | 10 ++-- .../common/settings/Settings.java | 2 - .../index/analysis/AnalysisRegistry.java | 2 +- .../org/elasticsearch/plugins/Plugin.java | 2 +- .../allocation/BalanceConfigurationTests.java | 2 +- .../index/IndexSortSettingsTests.java | 3 +- .../index/MergePolicySettingsTests.java | 5 +- .../cluster/ESAllocationTestCase.java | 2 +- .../analysis/MyFilterTokenFilterFactory.java | 2 +- .../xpack/core/ilm/ForceMergeAction.java | 13 +++--- .../xpack/core/ilm/MigrateAction.java | 6 +-- .../xpack/core/ilm/RolloverAction.java | 6 +-- .../xpack/core/ilm/SetPriorityAction.java | 5 +- .../rollup/v2/TransportRollupAction.java | 13 +++--- 33 files changed, 101 insertions(+), 74 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/CreateIndexRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/CreateIndexRequest.java index ced6106a9e21..4e680ec2b497 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/CreateIndexRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/CreateIndexRequest.java @@ -36,8 +36,6 @@ import java.util.Objects; import java.util.Set; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; - /** * A request to create an index. */ @@ -47,7 +45,7 @@ public class CreateIndexRequest extends TimedRequest implements Validatable, ToX static final ParseField ALIASES = new ParseField("aliases"); private final String index; - private Settings settings = EMPTY_SETTINGS; + private Settings settings = Settings.EMPTY; private BytesReference mappings; private XContentType mappingsXContentType; diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/IndexTemplateMetadata.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/IndexTemplateMetadata.java index 3bd9d4b097e3..e08536cbc977 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/IndexTemplateMetadata.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/IndexTemplateMetadata.java @@ -178,7 +178,7 @@ public static class Builder { private List indexPatterns; - private Settings settings = Settings.Builder.EMPTY_SETTINGS; + private Settings settings = Settings.EMPTY; private MappingMetadata mappings; diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/PutIndexTemplateRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/PutIndexTemplateRequest.java index e4d392633cb6..18545b06f69f 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/PutIndexTemplateRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/indices/PutIndexTemplateRequest.java @@ -40,7 +40,6 @@ import java.util.stream.Collectors; import static org.elasticsearch.action.ValidateActions.addValidationError; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; /** * A request to create an index template. @@ -66,7 +65,7 @@ public class PutIndexTemplateRequest extends MasterNodeRequest r.transientSettings = t, (p, c) -> Settings.fromXContent(p), TRANSIENT); } - private Settings transientSettings = EMPTY_SETTINGS; - private Settings persistentSettings = EMPTY_SETTINGS; + private Settings transientSettings = Settings.EMPTY; + private Settings persistentSettings = Settings.EMPTY; public ClusterUpdateSettingsRequest(StreamInput in) throws IOException { super(in); diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/snapshots/create/CreateSnapshotRequest.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/snapshots/create/CreateSnapshotRequest.java index f7acce3934f9..8900a8522645 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/snapshots/create/CreateSnapshotRequest.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/snapshots/create/CreateSnapshotRequest.java @@ -33,7 +33,6 @@ import static org.elasticsearch.action.ValidateActions.addValidationError; import static org.elasticsearch.common.Strings.EMPTY_ARRAY; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; import static org.elasticsearch.common.settings.Settings.readSettingsFromStream; import static org.elasticsearch.common.settings.Settings.writeSettingsToStream; import static org.elasticsearch.common.xcontent.support.XContentMapValues.nodeBooleanValue; @@ -70,7 +69,7 @@ public class CreateSnapshotRequest extends MasterNodeRequest mappings = new HashMap<>(); diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java b/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java index 018f4e8bf55e..24644d103706 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java @@ -45,7 +45,6 @@ import java.util.Set; import static org.elasticsearch.action.ValidateActions.addValidationError; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; import static org.elasticsearch.common.settings.Settings.readSettingsFromStream; import static org.elasticsearch.common.settings.Settings.writeSettingsToStream; @@ -68,7 +67,7 @@ public class CreateIndexRequest extends AcknowledgedRequest private String index; - private Settings settings = EMPTY_SETTINGS; + private Settings settings = Settings.EMPTY; private final Map mappings = new HashMap<>(); @@ -127,7 +126,7 @@ public CreateIndexRequest() { * @param index the name of the index */ public CreateIndexRequest(String index) { - this(index, EMPTY_SETTINGS); + this(index, Settings.EMPTY); } /** diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/MetadataRolloverService.java b/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/MetadataRolloverService.java index b771b614ba91..46a933dd4542 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/MetadataRolloverService.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/rollover/MetadataRolloverService.java @@ -55,6 +55,8 @@ public class MetadataRolloverService { private static final Pattern INDEX_NAME_PATTERN = Pattern.compile("^.*-\\d+$"); private static final List VALID_ROLLOVER_TARGETS = org.elasticsearch.core.List.of(ALIAS, DATA_STREAM); + public static final Settings HIDDEN_INDEX_SETTINGS = Settings.builder().put(IndexMetadata.SETTING_INDEX_HIDDEN, true).build(); + private final ThreadPool threadPool; private final MetadataCreateIndexService createIndexService; private final MetadataIndexAliasesService indexAliasesService; @@ -276,7 +278,7 @@ static CreateIndexClusterStateUpdateRequest prepareDataStreamCreateIndexRequest( final String targetIndexName, CreateIndexRequest createIndexRequest, final SystemDataStreamDescriptor descriptor) { - Settings settings = descriptor != null ? Settings.EMPTY : Settings.builder().put("index.hidden", true).build(); + Settings settings = descriptor != null ? Settings.EMPTY : HIDDEN_INDEX_SETTINGS; return prepareCreateIndexRequest(targetIndexName, targetIndexName, "rollover_data_stream", createIndexRequest, settings) .dataStreamName(dataStreamName) .systemDataStreamDescriptor(descriptor); diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java index 78cf32952a66..e9d21353fc7c 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java @@ -31,7 +31,6 @@ import static org.elasticsearch.action.ValidateActions.addValidationError; import static org.elasticsearch.common.settings.Settings.readSettingsFromStream; import static org.elasticsearch.common.settings.Settings.writeSettingsToStream; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; /** * Request for an update index settings action @@ -43,7 +42,7 @@ public class UpdateSettingsRequest extends AcknowledgedRequest mappings = new HashMap<>(); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java index 7a9fde4482ba..f366c0828064 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java @@ -1069,7 +1069,7 @@ public static class Builder { private long settingsVersion = 1; private long aliasesVersion = 1; private long[] primaryTerms = null; - private Settings settings = Settings.Builder.EMPTY_SETTINGS; + private Settings settings = Settings.EMPTY; private final ImmutableOpenMap.Builder mappings; private final ImmutableOpenMap.Builder aliases; private final ImmutableOpenMap.Builder customMetadata; diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetadata.java index 4e22b205855d..f9b68570ca4b 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetadata.java @@ -254,7 +254,7 @@ public static class Builder { private List indexPatterns; - private Settings settings = Settings.Builder.EMPTY_SETTINGS; + private Settings settings = Settings.EMPTY; private final ImmutableOpenMap.Builder mappings; diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java index 8f8c87550dc1..10f023158aa9 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java @@ -1151,8 +1151,8 @@ public static class Builder { private long version; private CoordinationMetadata coordinationMetadata = CoordinationMetadata.EMPTY_METADATA; - private Settings transientSettings = Settings.Builder.EMPTY_SETTINGS; - private Settings persistentSettings = Settings.Builder.EMPTY_SETTINGS; + private Settings transientSettings = Settings.EMPTY; + private Settings persistentSettings = Settings.EMPTY; private DiffableStringMap hashesOfConsistentSettings = DiffableStringMap.EMPTY; private final ImmutableOpenMap.Builder indices; diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateDataStreamService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateDataStreamService.java index e3242ca59f6f..d6b437a3d0f0 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateDataStreamService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateDataStreamService.java @@ -14,6 +14,7 @@ import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.create.CreateIndexClusterStateUpdateRequest; +import org.elasticsearch.action.admin.indices.rollover.MetadataRolloverService; import org.elasticsearch.action.support.ActiveShardCount; import org.elasticsearch.action.support.ActiveShardsObserver; import org.elasticsearch.action.support.master.AcknowledgedResponse; @@ -23,7 +24,6 @@ import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Priority; import org.elasticsearch.common.Strings; -import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.Index; import org.elasticsearch.index.mapper.DataStreamTimestampFieldMapper; @@ -202,7 +202,7 @@ static ClusterState createDataStream(MetadataCreateIndexService metadataCreateIn .systemDataStreamDescriptor(systemDataStreamDescriptor); if (isSystem == false) { - createIndexRequest.settings(Settings.builder().put("index.hidden", true).build()); + createIndexRequest.settings(MetadataRolloverService.HIDDEN_INDEX_SETTINGS); } try { diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java index 048fb9ebab83..c8c990890fca 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/MetadataIndexTemplateService.java @@ -1417,7 +1417,7 @@ public static class PutRequest { int order; Integer version; List indexPatterns; - Settings settings = Settings.Builder.EMPTY_SETTINGS; + Settings settings = Settings.EMPTY; Map mappings = new HashMap<>(); List aliases = new ArrayList<>(); diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DataTier.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DataTier.java index cc3a300e39e4..16e01f509c3c 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DataTier.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DataTier.java @@ -21,12 +21,12 @@ import org.elasticsearch.snapshots.SearchableSnapshotsSettings; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; -import java.util.stream.Collectors; /** * The {@code DataTier} class encapsulates the formalization of the "content", @@ -49,6 +49,12 @@ public class DataTier { public static final Setting.Validator DATA_TIER_SETTING_VALIDATOR = new DataTierSettingValidator(); + private static final Settings DATA_CONTENT_TIER_PREFERENCE_SETTINGS = Settings.builder().put(TIER_PREFERENCE, DATA_CONTENT).build(); + + private static final Settings DATA_HOT_TIER_PREFERENCE_SETTINGS = Settings.builder().put(TIER_PREFERENCE, DATA_HOT).build(); + + private static final Settings NULL_TIER_PREFERENCE_SETTINGS = Settings.builder().putNull(TIER_PREFERENCE).build(); + public static final Setting TIER_PREFERENCE_SETTING = new Setting<>( new Setting.SimpleKey(TIER_PREFERENCE), DataTierSettingValidator::getDefaultTierPreference, @@ -70,6 +76,24 @@ public class DataTier { private static final List ORDERED_FROZEN_TO_HOT_TIERS = org.elasticsearch.core.List.of(DATA_FROZEN, DATA_COLD, DATA_WARM, DATA_HOT); + private static final Map PREFERENCE_TIER_CONFIGURATIONS; + + private static final Map PREFERENCE_TIER_CONFIGURATION_SETTINGS; + + static { + final Map tmp = new HashMap<>(); + final Map tmpSettings = new HashMap<>(); + for (int i = 0, ordered_frozen_to_hot_tiersSize = ORDERED_FROZEN_TO_HOT_TIERS.size(); i < ordered_frozen_to_hot_tiersSize; i++) { + String tier = ORDERED_FROZEN_TO_HOT_TIERS.get(i); + final String prefTierString = + String.join(",", ORDERED_FROZEN_TO_HOT_TIERS.subList(i, ORDERED_FROZEN_TO_HOT_TIERS.size())).intern(); + tmp.put(tier, prefTierString); + tmpSettings.put(tier, Settings.builder().put(DataTier.TIER_PREFERENCE, prefTierString).build()); + } + PREFERENCE_TIER_CONFIGURATIONS = org.elasticsearch.core.Map.copyOf(tmp); + PREFERENCE_TIER_CONFIGURATION_SETTINGS = org.elasticsearch.core.Map.copyOf(tmpSettings); + } + /** * Returns true if the given tier name is a valid tier */ @@ -83,11 +107,19 @@ public static boolean validTierName(String tierName) { * This is usually used in conjunction with {@link #TIER_PREFERENCE_SETTING}. */ public static String getPreferredTiersConfiguration(String targetTier) { - int indexOfTargetTier = ORDERED_FROZEN_TO_HOT_TIERS.indexOf(targetTier); - if (indexOfTargetTier == -1) { + final String res = PREFERENCE_TIER_CONFIGURATIONS.get(targetTier); + if (res == null) { + throw new IllegalArgumentException("invalid data tier [" + targetTier + "]"); + } + return res; + } + + public static Settings getPreferredTiersConfigurationSettings(String targetTier) { + final Settings res = PREFERENCE_TIER_CONFIGURATION_SETTINGS.get(targetTier); + if (res == null) { throw new IllegalArgumentException("invalid data tier [" + targetTier + "]"); } - return ORDERED_FROZEN_TO_HOT_TIERS.stream().skip(indexOfTargetTier).collect(Collectors.joining(",")); + return res; } /** @@ -157,7 +189,7 @@ public Settings getAdditionalIndexSettings(String indexName, boolean isDataStrea Set settings = indexSettings.keySet(); if (settings.contains(TIER_PREFERENCE)) { // just a marker -- this null value will be removed or overridden by the template/request settings - return Settings.builder().putNull(TIER_PREFERENCE).build(); + return NULL_TIER_PREFERENCE_SETTINGS; } else if (settings.stream().anyMatch(s -> s.startsWith(IndexMetadata.INDEX_ROUTING_REQUIRE_GROUP_PREFIX + ".")) || settings.stream().anyMatch(s -> s.startsWith(IndexMetadata.INDEX_ROUTING_EXCLUDE_GROUP_PREFIX + ".")) || settings.stream().anyMatch(s -> s.startsWith(IndexMetadata.INDEX_ROUTING_INCLUDE_GROUP_PREFIX + "."))) { @@ -169,9 +201,9 @@ public Settings getAdditionalIndexSettings(String indexName, boolean isDataStrea // tier if the index is part of a data stream, the "content" // tier if it is not. if (isDataStreamIndex) { - return Settings.builder().put(TIER_PREFERENCE, DATA_HOT).build(); + return DATA_HOT_TIER_PREFERENCE_SETTINGS; } else { - return Settings.builder().put(TIER_PREFERENCE, DATA_CONTENT).build(); + return DATA_CONTENT_TIER_PREFERENCE_SETTINGS; } } } diff --git a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java index 0f03cd5e83b4..1b3f7d126b14 100644 --- a/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java +++ b/server/src/main/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitor.java @@ -59,6 +59,12 @@ public class DiskThresholdMonitor { private static final Logger logger = LogManager.getLogger(DiskThresholdMonitor.class); + private static final Settings READ_ONLY_ALLOW_DELETE_SETTINGS = Settings.builder() + .put(IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE, Boolean.TRUE.toString()).build(); + + private static final Settings NOT_READ_ONLY_ALLOW_DELETE_SETTINGS = + Settings.builder().putNull(IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE).build(); + private final DiskThresholdSettings diskThresholdSettings; private final Client client; private final Supplier clusterStateSupplier; @@ -378,9 +384,7 @@ protected void updateIndicesReadOnly(Set indicesToUpdate, ActionListener setLastRunTimeMillis(); listener.onFailure(e); }); - Settings readOnlySettings = readOnly ? Settings.builder() - .put(IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE, Boolean.TRUE.toString()).build() : - Settings.builder().putNull(IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE).build(); + Settings readOnlySettings = readOnly ? READ_ONLY_ALLOW_DELETE_SETTINGS : NOT_READ_ONLY_ALLOW_DELETE_SETTINGS; client.admin().indices().prepareUpdateSettings(indicesToUpdate.toArray(Strings.EMPTY_ARRAY)) .setSettings(readOnlySettings) .execute(wrappedListener.map(r -> null)); diff --git a/server/src/main/java/org/elasticsearch/common/settings/Settings.java b/server/src/main/java/org/elasticsearch/common/settings/Settings.java index 4ddef27aaaac..2f102064ec1d 100644 --- a/server/src/main/java/org/elasticsearch/common/settings/Settings.java +++ b/server/src/main/java/org/elasticsearch/common/settings/Settings.java @@ -762,8 +762,6 @@ public Set keySet() { */ public static class Builder { - public static final Settings EMPTY_SETTINGS = new Builder().build(); - // we use a sorted map for consistent serialization when using getAsMap() private final Map map = new TreeMap<>(); diff --git a/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java b/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java index 9e60a72ff74a..c8f8c10275c6 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java @@ -538,7 +538,7 @@ public IndexAnalyzers build(IndexSettings indexSettings, if (analyzers.containsKey(DEFAULT_ANALYZER_NAME) == false) { analyzers.put(DEFAULT_ANALYZER_NAME, produceAnalyzer(DEFAULT_ANALYZER_NAME, - new StandardAnalyzerProvider(indexSettings, null, DEFAULT_ANALYZER_NAME, Settings.Builder.EMPTY_SETTINGS), + new StandardAnalyzerProvider(indexSettings, null, DEFAULT_ANALYZER_NAME, Settings.EMPTY), tokenFilterFactoryFactories, charFilterFactoryFactories, tokenizerFactoryFactories)); } NamedAnalyzer defaultAnalyzer = analyzers.get(DEFAULT_ANALYZER_NAME); diff --git a/server/src/main/java/org/elasticsearch/plugins/Plugin.java b/server/src/main/java/org/elasticsearch/plugins/Plugin.java index 000a3498fed6..fa922a606824 100644 --- a/server/src/main/java/org/elasticsearch/plugins/Plugin.java +++ b/server/src/main/java/org/elasticsearch/plugins/Plugin.java @@ -125,7 +125,7 @@ public Collection createComponents(Client client, ClusterService cluster * overwritten with the additional settings. These settings added if they don't exist. */ public Settings additionalSettings() { - return Settings.Builder.EMPTY_SETTINGS; + return Settings.EMPTY; } /** diff --git a/server/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java b/server/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java index a82749ca5343..4eccd82807a3 100644 --- a/server/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/routing/allocation/BalanceConfigurationTests.java @@ -264,7 +264,7 @@ public void testPersistedSettings() { public void testNoRebalanceOnPrimaryOverload() { Settings.Builder settings = Settings.builder(); AllocationService strategy = new AllocationService(randomAllocationDeciders(settings.build(), - new ClusterSettings(Settings.Builder.EMPTY_SETTINGS, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), random()), + new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), random()), new TestGatewayAllocator(), new ShardsAllocator() { /* * // this allocator tries to rebuild this scenario where a rebalance is diff --git a/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java b/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java index 00b0a8f8e164..56d638cfc72d 100644 --- a/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java +++ b/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java @@ -28,7 +28,6 @@ import java.util.Collections; import java.util.function.Supplier; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; import static org.elasticsearch.index.IndexSettingsTests.newIndexMeta; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -40,7 +39,7 @@ private static IndexSettings indexSettings(Settings settings) { } public void testNoIndexSort() { - IndexSettings indexSettings = indexSettings(EMPTY_SETTINGS); + IndexSettings indexSettings = indexSettings(Settings.EMPTY); assertFalse(indexSettings.getIndexSortConfig().hasIndexSort()); } diff --git a/server/src/test/java/org/elasticsearch/index/MergePolicySettingsTests.java b/server/src/test/java/org/elasticsearch/index/MergePolicySettingsTests.java index c81dcf0dfffb..6cd0d2e908f4 100644 --- a/server/src/test/java/org/elasticsearch/index/MergePolicySettingsTests.java +++ b/server/src/test/java/org/elasticsearch/index/MergePolicySettingsTests.java @@ -16,7 +16,6 @@ import java.io.IOException; -import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS; import static org.elasticsearch.index.IndexSettingsTests.newIndexMeta; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -54,7 +53,7 @@ public void testNoMerges() { } public void testUpdateSettings() throws IOException { - IndexSettings indexSettings = indexSettings(EMPTY_SETTINGS); + IndexSettings indexSettings = indexSettings(Settings.EMPTY); assertThat(indexSettings.getMergePolicy().getNoCFSRatio(), equalTo(0.1)); indexSettings = indexSettings(build(0.9)); assertThat((indexSettings.getMergePolicy()).getNoCFSRatio(), equalTo(0.9)); @@ -131,7 +130,7 @@ public void testTieredMergePolicySettingsUpdate() throws IOException { Settings.builder().put(MergePolicyConfig.INDEX_MERGE_POLICY_DELETES_PCT_ALLOWED_SETTING.getKey(), 53).build()))); final Throwable cause = exc.getCause(); assertThat(cause.getMessage(), containsString("must be <= 50.0")); - indexSettings.updateIndexMetadata(newIndexMeta("index", EMPTY_SETTINGS)); // see if defaults are restored + indexSettings.updateIndexMetadata(newIndexMeta("index", Settings.EMPTY)); // see if defaults are restored assertEquals(((EsTieredMergePolicy) indexSettings.getMergePolicy()).getForceMergeDeletesPctAllowed(), MergePolicyConfig.DEFAULT_EXPUNGE_DELETES_ALLOWED, 0.0d); assertEquals(((EsTieredMergePolicy) indexSettings.getMergePolicy()).getFloorSegmentMB(), diff --git a/test/framework/src/main/java/org/elasticsearch/cluster/ESAllocationTestCase.java b/test/framework/src/main/java/org/elasticsearch/cluster/ESAllocationTestCase.java index 2dd0afa7a490..5aefb1e12cfc 100644 --- a/test/framework/src/main/java/org/elasticsearch/cluster/ESAllocationTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/cluster/ESAllocationTestCase.java @@ -60,7 +60,7 @@ public Long getShardSize(ShardRouting shardRouting) { }; public static MockAllocationService createAllocationService() { - return createAllocationService(Settings.Builder.EMPTY_SETTINGS); + return createAllocationService(Settings.EMPTY); } public static MockAllocationService createAllocationService(Settings settings) { diff --git a/test/framework/src/main/java/org/elasticsearch/index/analysis/MyFilterTokenFilterFactory.java b/test/framework/src/main/java/org/elasticsearch/index/analysis/MyFilterTokenFilterFactory.java index c0bbeea51f3e..388dac78f07d 100644 --- a/test/framework/src/main/java/org/elasticsearch/index/analysis/MyFilterTokenFilterFactory.java +++ b/test/framework/src/main/java/org/elasticsearch/index/analysis/MyFilterTokenFilterFactory.java @@ -17,7 +17,7 @@ public class MyFilterTokenFilterFactory extends AbstractTokenFilterFactory { public MyFilterTokenFilterFactory(IndexSettings indexSettings, Environment env, String name, Settings settings) { - super(indexSettings, name, Settings.Builder.EMPTY_SETTINGS); + super(indexSettings, name, Settings.EMPTY); } @Override diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/ForceMergeAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/ForceMergeAction.java index 68ef0414acd2..6d0bf8680ed0 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/ForceMergeAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/ForceMergeAction.java @@ -36,6 +36,11 @@ public class ForceMergeAction implements LifecycleAction { private static final Logger logger = LogManager.getLogger(ForceMergeAction.class); + private static final Settings READ_ONLY_SETTINGS = Settings.builder().put(IndexMetadata.SETTING_BLOCKS_WRITE, true).build(); + + private static final Settings BEST_COMPRESSION_SETTINGS = + Settings.builder().put(EngineConfig.INDEX_CODEC_SETTING.getKey(), CodecService.BEST_COMPRESSION_CODEC).build(); + public static final String NAME = "forcemerge"; public static final ParseField MAX_NUM_SEGMENTS_FIELD = new ParseField("max_num_segments"); public static final ParseField CODEC = new ParseField("index_codec"); @@ -120,10 +125,6 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws @Override public List toSteps(Client client, String phase, Step.StepKey nextStepKey) { - Settings readOnlySettings = Settings.builder().put(IndexMetadata.SETTING_BLOCKS_WRITE, true).build(); - Settings bestCompressionSettings = Settings.builder() - .put(EngineConfig.INDEX_CODEC_SETTING.getKey(), CodecService.BEST_COMPRESSION_CODEC).build(); - final boolean codecChange = codec != null && codec.equals(CodecService.BEST_COMPRESSION_CODEC); StepKey preForceMergeBranchingKey = new StepKey(phase, NAME, CONDITIONAL_SKIP_FORCE_MERGE_STEP); @@ -153,11 +154,11 @@ public List toSteps(Client client, String phase, Step.StepKey nextStepKey) CheckNotDataStreamWriteIndexStep checkNotWriteIndexStep = new CheckNotDataStreamWriteIndexStep(checkNotWriteIndex, readOnlyKey); UpdateSettingsStep readOnlyStep = - new UpdateSettingsStep(readOnlyKey, codecChange ? closeKey : forceMergeKey, client, readOnlySettings); + new UpdateSettingsStep(readOnlyKey, codecChange ? closeKey : forceMergeKey, client, READ_ONLY_SETTINGS); CloseIndexStep closeIndexStep = new CloseIndexStep(closeKey, updateCompressionKey, client); UpdateSettingsStep updateBestCompressionSettings = new UpdateSettingsStep(updateCompressionKey, - openKey, client, bestCompressionSettings); + openKey, client, BEST_COMPRESSION_SETTINGS); OpenIndexStep openIndexStep = new OpenIndexStep(openKey, waitForGreenIndexKey, client); WaitForIndexColorStep waitForIndexGreenStep = new WaitForIndexColorStep(waitForGreenIndexKey, forceMergeKey, ClusterHealthStatus.GREEN); diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/MigrateAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/MigrateAction.java index b6b5f563a103..201ee64f5126 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/MigrateAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/MigrateAction.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.Objects; -import static org.elasticsearch.cluster.routing.allocation.DataTier.getPreferredTiersConfiguration; +import static org.elasticsearch.cluster.routing.allocation.DataTier.getPreferredTiersConfigurationSettings; /** * A {@link LifecycleAction} which enables or disables the automatic migration of data between @@ -115,9 +115,7 @@ public List toSteps(Client client, String phase, StepKey nextStepKey) { return false; }); UpdateSettingsStep updateMigrationSettingStep = new UpdateSettingsStep(migrationKey, migrationRoutedKey, client, - Settings.builder() - .put(DataTier.TIER_PREFERENCE, getPreferredTiersConfiguration(targetTier)) - .build()); + getPreferredTiersConfigurationSettings(targetTier)); DataTierMigrationRoutedStep migrationRoutedStep = new DataTierMigrationRoutedStep(migrationRoutedKey, nextStepKey); return org.elasticsearch.core.List.of(conditionalSkipActionStep, updateMigrationSettingStep, migrationRoutedStep); } else { diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/RolloverAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/RolloverAction.java index b28dbd5c2e85..095ae8d61881 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/RolloverAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/RolloverAction.java @@ -42,6 +42,8 @@ public class RolloverAction implements LifecycleAction { public static final Setting LIFECYCLE_ROLLOVER_ALIAS_SETTING = Setting.simpleString(LIFECYCLE_ROLLOVER_ALIAS, Setting.Property.Dynamic, Setting.Property.IndexScope); + private static final Settings INDEXING_COMPLETE = Settings.builder().put(LifecycleSettings.LIFECYCLE_INDEXING_COMPLETE, true).build(); + private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>(NAME, a -> new RolloverAction((ByteSizeValue) a[0], (ByteSizeValue) a[1], (TimeValue) a[2], (Long) a[3])); @@ -168,8 +170,6 @@ public boolean isSafeAction() { @Override public List toSteps(Client client, String phase, Step.StepKey nextStepKey) { - Settings indexingComplete = Settings.builder().put(LifecycleSettings.LIFECYCLE_INDEXING_COMPLETE, true).build(); - StepKey waitForRolloverReadyStepKey = new StepKey(phase, NAME, WaitForRolloverReadyStep.NAME); StepKey rolloverStepKey = new StepKey(phase, NAME, RolloverStep.NAME); StepKey waitForActiveShardsKey = new StepKey(phase, NAME, WaitForActiveShardsStep.NAME); @@ -183,7 +183,7 @@ public List toSteps(Client client, String phase, Step.StepKey nextStepKey) UpdateRolloverLifecycleDateStep updateDateStep = new UpdateRolloverLifecycleDateStep(updateDateStepKey, setIndexingCompleteStepKey, System::currentTimeMillis); UpdateSettingsStep setIndexingCompleteStep = new UpdateSettingsStep(setIndexingCompleteStepKey, nextStepKey, - client, indexingComplete); + client, INDEXING_COMPLETE); return Arrays.asList(waitForRolloverReadyStep, rolloverStep, waitForActiveShardsStep, updateDateStep, setIndexingCompleteStep); } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/SetPriorityAction.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/SetPriorityAction.java index e7049b1a6d97..2dae46513900 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/SetPriorityAction.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/SetPriorityAction.java @@ -35,6 +35,9 @@ public class SetPriorityAction implements LifecycleAction { private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>(NAME, a -> new SetPriorityAction((Integer) a[0])); + private static final Settings NULL_PRIORITY_SETTINGS = + Settings.builder().putNull(IndexMetadata.INDEX_PRIORITY_SETTING.getKey()).build(); + //package private for testing final Integer recoveryPriority; @@ -90,7 +93,7 @@ public boolean isSafeAction() { public List toSteps(Client client, String phase, StepKey nextStepKey) { StepKey key = new StepKey(phase, NAME, NAME); Settings indexPriority = recoveryPriority == null ? - Settings.builder().putNull(IndexMetadata.INDEX_PRIORITY_SETTING.getKey()).build() + NULL_PRIORITY_SETTINGS : Settings.builder().put(IndexMetadata.INDEX_PRIORITY_SETTING.getKey(), recoveryPriority).build(); return Collections.singletonList(new UpdateSettingsStep(key, nextStepKey, client, indexPriority)); } diff --git a/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/v2/TransportRollupAction.java b/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/v2/TransportRollupAction.java index 0b00784fd4fc..4d564c2d6fbb 100644 --- a/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/v2/TransportRollupAction.java +++ b/x-pack/plugin/rollup/src/main/java/org/elasticsearch/xpack/rollup/v2/TransportRollupAction.java @@ -13,6 +13,7 @@ import org.elasticsearch.action.admin.indices.create.CreateIndexClusterStateUpdateRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; +import org.elasticsearch.action.admin.indices.rollover.MetadataRolloverService; import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest; import org.elasticsearch.action.admin.indices.shrink.ResizeRequest; import org.elasticsearch.action.admin.indices.shrink.ResizeType; @@ -71,6 +72,9 @@ public class TransportRollupAction extends AcknowledgedTransportMasterNodeAction private static final Logger logger = LogManager.getLogger(TransportRollupAction.class); + private static final Settings VISIBLE_INDEX_SETTINGS = Settings.builder().put(IndexMetadata.SETTING_INDEX_HIDDEN, false).build(); + private static final Settings WRITE_BLOCKED_SETTINGS = Settings.builder().put(IndexMetadata.SETTING_BLOCKS_WRITE, true).build(); + private final Client client; private final ClusterService clusterService; private final MetadataCreateIndexService metadataCreateIndexService; @@ -152,16 +156,13 @@ protected void masterOperation( "rollup", tmpIndexName, tmpIndexName - ).settings(Settings.builder().put(IndexMetadata.SETTING_INDEX_HIDDEN, true).build()).mappings(mappingAsMap); + ).settings(MetadataRolloverService.HIDDEN_INDEX_SETTINGS).mappings(mappingAsMap); RollupIndexerAction.Request rollupIndexerRequest = new RollupIndexerAction.Request(request); ResizeRequest resizeRequest = new ResizeRequest(request.getRollupIndex(), tmpIndexName); resizeRequest.setResizeType(ResizeType.CLONE); - resizeRequest.getTargetIndexRequest().settings(Settings.builder().put(IndexMetadata.SETTING_INDEX_HIDDEN, false).build()); - UpdateSettingsRequest updateSettingsReq = new UpdateSettingsRequest( - Settings.builder().put(IndexMetadata.SETTING_BLOCKS_WRITE, true).build(), - tmpIndexName - ); + resizeRequest.getTargetIndexRequest().settings(VISIBLE_INDEX_SETTINGS); + UpdateSettingsRequest updateSettingsReq = new UpdateSettingsRequest(WRITE_BLOCKED_SETTINGS, tmpIndexName); // 1. validate Rollup Config against Field Caps // 2. create hidden temporary index