From a7d986e6d2a5f9351903f6e9723124db438b3b47 Mon Sep 17 00:00:00 2001 From: Liyun Xiu Date: Wed, 24 Jul 2024 16:50:20 +0800 Subject: [PATCH] Update changelog and add one more test case Signed-off-by: Liyun Xiu --- CHANGELOG.md | 1 + .../indices/settings/UpdateSettingsIT.java | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aa3d7a58dda4..758ed4120ce8f 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/), - Fix constant_keyword field type used when creating index ([#14807](https://github.com/opensearch-project/OpenSearch/pull/14807)) - Use circuit breaker in InternalHistogram when adding empty buckets ([#14754](https://github.com/opensearch-project/OpenSearch/pull/14754)) - Fix searchable snapshot failure with scripted fields ([#14411](https://github.com/opensearch-project/OpenSearch/pull/14411)) +- Fix update settings with null replica not honoring cluster setting bug ([#14948](https://github.com/opensearch-project/OpenSearch/pull/14948)) ### Security diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/settings/UpdateSettingsIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/settings/UpdateSettingsIT.java index a2b8c800f4282..ae79445ce41be 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/settings/UpdateSettingsIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/settings/UpdateSettingsIT.java @@ -835,6 +835,7 @@ private void runTestDefaultNumberOfReplicasTest(final boolean closeIndex) { public void testNullReplicaUpdate() { internalCluster().ensureAtLeastNumDataNodes(2); + // cluster setting String defaultNumberOfReplica = "3"; assertAcked( @@ -844,7 +845,7 @@ public void testNullReplicaUpdate() { .setPersistentSettings(Settings.builder().put("cluster.default_number_of_replicas", defaultNumberOfReplica)) .get() ); - + // create index with number of replicas will ignore default value assertAcked( client().admin() .indices() @@ -858,7 +859,7 @@ public void testNullReplicaUpdate() { .get() .getSetting("test", IndexMetadata.SETTING_NUMBER_OF_REPLICAS); assertEquals("2", numberOfReplicas); - + // update setting with null replica will use cluster setting of replica number assertAcked( client().admin() .indices() @@ -872,12 +873,27 @@ public void testNullReplicaUpdate() { .get() .getSetting("test", IndexMetadata.SETTING_NUMBER_OF_REPLICAS); assertEquals(defaultNumberOfReplica, numberOfReplicas); + + // Clean up cluster setting, then update setting with null replica should pick up default value of 1 assertAcked( client().admin() .cluster() .prepareUpdateSettings() .setPersistentSettings(Settings.builder().putNull("cluster.default_number_of_replicas")) ); + assertAcked( + client().admin() + .indices() + .prepareUpdateSettings("test") + .setSettings(Settings.builder().putNull(IndexMetadata.SETTING_NUMBER_OF_REPLICAS)) + ); + + numberOfReplicas = client().admin() + .indices() + .prepareGetSettings("test") + .get() + .getSetting("test", IndexMetadata.SETTING_NUMBER_OF_REPLICAS); + assertEquals("1", numberOfReplicas); } public void testNoopUpdate() {