diff --git a/CHANGELOG.md b/CHANGELOG.md index fe393e5ddb717..8a7bffbf2f6ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Field-level ignore_malformed should override index-level setting ([#18706](https://github.com/opensearch-project/OpenSearch/pull/18706)) - Fixed Staggered merge - load average replace with AverageTrackers, some Default thresholds modified ([#18666](https://github.com/opensearch-project/OpenSearch/pull/18666)) - Use `new SecureRandom()` to avoid blocking ([18729](https://github.com/opensearch-project/OpenSearch/issues/18729)) +- Ignore archived settings on update ([#8714](https://github.com/opensearch-project/OpenSearch/issues/8714)) - Ignore awareness attributes when a custom preference string is included with a search request ([#18848](https://github.com/opensearch-project/OpenSearch/pull/18848)) - Use ScoreDoc instead of FieldDoc when creating TopScoreDocCollectorManager to avoid unnecessary conversion ([#18802](https://github.com/opensearch-project/OpenSearch/pull/18802)) - Fix leafSorter optimization for ReadOnlyEngine and NRTReplicationEngine ([#18639](https://github.com/opensearch-project/OpenSearch/pull/18639)) diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/settings/ArchivedIndexSettingsIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/settings/ArchivedIndexSettingsIT.java index 8dc343abf8da2..79a75bfdabed5 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/settings/ArchivedIndexSettingsIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/settings/ArchivedIndexSettingsIT.java @@ -88,6 +88,14 @@ public void testArchiveSettings() throws Exception { startsWith("Can't update non dynamic settings [[archived.index.dummy]] for open indices [[test") ); + // Verify that a random unrelated setting can be updated when archived settings are present. + client().admin() + .indices() + .prepareUpdateSettings("test") + .setSettings(Settings.builder().put("index.max_terms_count", 1024).build()) + .execute() + .actionGet(); + // close the index. client().admin().indices().prepareClose("test").get(); diff --git a/server/src/main/java/org/opensearch/cluster/metadata/MetadataUpdateSettingsService.java b/server/src/main/java/org/opensearch/cluster/metadata/MetadataUpdateSettingsService.java index 3e35ee90dad6c..9f594e9ad2ff8 100644 --- a/server/src/main/java/org/opensearch/cluster/metadata/MetadataUpdateSettingsService.java +++ b/server/src/main/java/org/opensearch/cluster/metadata/MetadataUpdateSettingsService.java @@ -357,7 +357,9 @@ public ClusterState execute(ClusterState currentState) { Settings finalSettings = indexSettings.build(); indexScopedSettings.validate( finalSettings.filter(k -> indexScopedSettings.isPrivateSetting(k) == false), - true + true, // validateDependencies + false, // ignorePrivateSettings + true // ignoreArchivedSettings ); metadataBuilder.put(IndexMetadata.builder(indexMetadata).settings(finalSettings)); } @@ -389,9 +391,9 @@ public ClusterState execute(ClusterState currentState) { Settings finalSettings = indexSettings.build(); indexScopedSettings.validate( finalSettings.filter(k -> indexScopedSettings.isPrivateSetting(k) == false), - true, - false, - true + true, // validateDependencies + false, // ignorePrivateSettings + true // ignoreArchivedSettings ); metadataBuilder.put(IndexMetadata.builder(indexMetadata).settings(finalSettings)); }