Skip to content

Commit f8baa4a

Browse files
author
Bhumika Saini
authored
Allow clearing remote_store.compatibility_mode setting (opensearch-project#13646)
Signed-off-by: Bhumika Saini <sabhumik@amazon.com>
1 parent 14f1c43 commit f8baa4a

File tree

4 files changed

+41
-17
lines changed

4 files changed

+41
-17
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2828
### Fixed
2929
- Fix negative RequestStats metric issue ([#13553](https://github.com/opensearch-project/OpenSearch/pull/13553))
3030
- Fix get field mapping API returns 404 error in mixed cluster with multiple versions ([#13624](https://github.com/opensearch-project/OpenSearch/pull/13624))
31+
- Allow clearing `remote_store.compatibility_mode` setting ([#13646](https://github.com/opensearch-project/OpenSearch/pull/13646))
3132

3233
### Security
3334

server/src/internalClusterTest/java/org/opensearch/remotemigration/RemoteStoreMigrationSettingsUpdateIT.java

+33-14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.opensearch.test.InternalTestCluster;
1515
import org.opensearch.test.OpenSearchIntegTestCase;
1616

17+
import java.io.IOException;
1718
import java.nio.file.Path;
1819
import java.util.Optional;
1920

@@ -26,6 +27,8 @@
2627
public class RemoteStoreMigrationSettingsUpdateIT extends RemoteStoreMigrationShardAllocationBaseTestCase {
2728

2829
private Client client;
30+
private String nonRemoteNodeName;
31+
private String remoteNodeName;
2932

3033
// remote store backed index setting tests
3134

@@ -120,18 +123,7 @@ public void testNewRestoredIndexIsRemoteStoreBackedForRemoteStoreDirectionAndMix
120123
// compatibility mode setting test
121124

122125
public void testSwitchToStrictMode() throws Exception {
123-
logger.info("Initialize cluster");
124-
initializeCluster(false);
125-
126-
logger.info("Create a mixed mode cluster");
127-
setClusterMode(MIXED.mode);
128-
addRemote = true;
129-
String remoteNodeName = internalCluster().startNode();
130-
addRemote = false;
131-
String nonRemoteNodeName = internalCluster().startNode();
132-
internalCluster().validateClusterFormed();
133-
assertNodeInCluster(remoteNodeName);
134-
assertNodeInCluster(nonRemoteNodeName);
126+
createMixedModeCluster();
135127

136128
logger.info("Attempt switching to strict mode");
137129
SettingsException exception = assertThrows(SettingsException.class, () -> setClusterMode(STRICT.mode));
@@ -140,12 +132,39 @@ public void testSwitchToStrictMode() throws Exception {
140132
exception.getMessage()
141133
);
142134

135+
stopRemoteNode();
136+
137+
logger.info("Attempt switching to strict mode");
138+
setClusterMode(STRICT.mode);
139+
}
140+
141+
public void testClearCompatibilityModeSetting() throws Exception {
142+
createMixedModeCluster();
143+
stopRemoteNode();
144+
145+
logger.info("Attempt clearing compatibility mode");
146+
clearClusterMode();
147+
}
148+
149+
private void stopRemoteNode() throws IOException {
143150
logger.info("Stop remote node so that cluster had only non-remote nodes");
144151
internalCluster().stopRandomNode(InternalTestCluster.nameFilter(remoteNodeName));
145152
ensureStableCluster(2);
153+
}
146154

147-
logger.info("Attempt switching to strict mode");
148-
setClusterMode(STRICT.mode);
155+
private void createMixedModeCluster() {
156+
logger.info("Initialize cluster");
157+
initializeCluster(false);
158+
159+
logger.info("Create a mixed mode cluster");
160+
setClusterMode(MIXED.mode);
161+
addRemote = true;
162+
remoteNodeName = internalCluster().startNode();
163+
addRemote = false;
164+
nonRemoteNodeName = internalCluster().startNode();
165+
internalCluster().validateClusterFormed();
166+
assertNodeInCluster(remoteNodeName);
167+
assertNodeInCluster(nonRemoteNodeName);
149168
}
150169

151170
// bootstrap a cluster

server/src/internalClusterTest/java/org/opensearch/remotemigration/RemoteStoreMigrationShardAllocationBaseTestCase.java

+5
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ protected void setClusterMode(String mode) {
5555
assertAcked(internalCluster().client().admin().cluster().updateSettings(updateSettingsRequest).actionGet());
5656
}
5757

58+
protected void clearClusterMode() {
59+
updateSettingsRequest.persistentSettings(Settings.builder().putNull(REMOTE_STORE_COMPATIBILITY_MODE_SETTING.getKey()));
60+
assertAcked(internalCluster().client().admin().cluster().updateSettings(updateSettingsRequest).actionGet());
61+
}
62+
5863
// set the migration direction for cluster [remote_store, docrep, none]
5964
protected void setDirection(String direction) {
6065
updateSettingsRequest.persistentSettings(Settings.builder().put(MIGRATION_DIRECTION_SETTING.getKey(), direction));

server/src/main/java/org/opensearch/action/admin/cluster/settings/TransportClusterUpdateSettingsAction.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666

6767
import java.io.IOException;
6868
import java.util.Collection;
69-
import java.util.Locale;
7069
import java.util.Set;
7170
import java.util.stream.Collectors;
7271

@@ -285,9 +284,9 @@ public ClusterState execute(final ClusterState currentState) {
285284
public void validateCompatibilityModeSettingRequest(ClusterUpdateSettingsRequest request, ClusterState clusterState) {
286285
Settings settings = Settings.builder().put(request.persistentSettings()).put(request.transientSettings()).build();
287286
if (RemoteStoreNodeService.REMOTE_STORE_COMPATIBILITY_MODE_SETTING.exists(settings)) {
288-
String value = settings.get(RemoteStoreNodeService.REMOTE_STORE_COMPATIBILITY_MODE_SETTING.getKey()).toLowerCase(Locale.ROOT);
287+
String value = RemoteStoreNodeService.REMOTE_STORE_COMPATIBILITY_MODE_SETTING.get(settings).mode;
289288
validateAllNodesOfSameVersion(clusterState.nodes());
290-
if (value.equals(RemoteStoreNodeService.CompatibilityMode.STRICT.mode)) {
289+
if (RemoteStoreNodeService.CompatibilityMode.STRICT.mode.equals(value)) {
291290
validateAllNodesOfSameType(clusterState.nodes());
292291
validateIndexSettings(clusterState);
293292
}

0 commit comments

Comments
 (0)