Skip to content

Commit 2d2b41d

Browse files
authored
Remove deprecated settings to defer cluster recovery (#17357)
The following settings were deprecated in ES 7.7 prior to the fork: - gateway.expected_nodes - gateway.expected_master_nodes - gateway.recover_after_nodes - gateway.recover_after_master_nodes This commit removes the deprecated settings and replaces their usages in tests with `recover_after_data_nodes`. Signed-off-by: Andrew Ross <andrross@amazon.com>
1 parent 9de21d1 commit 2d2b41d

File tree

10 files changed

+22
-202
lines changed

10 files changed

+22
-202
lines changed

CHANGELOG-3.0.md

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5858
- Remove `index.store.hybrid.mmap.extensions` setting in favor of `index.store.hybrid.nio.extensions` setting ([#9392](https://github.com/opensearch-project/OpenSearch/pull/9392))
5959
- Remove package org.opensearch.action.support.master ([#4856](https://github.com/opensearch-project/OpenSearch/issues/4856))
6060
- Remove transport-nio plugin ([#16887](https://github.com/opensearch-project/OpenSearch/issues/16887))
61+
- Remove deprecated 'gateway' settings used to defer cluster recovery ([#3117](https://github.com/opensearch-project/OpenSearch/issues/3117))
6162

6263
### Fixed
6364
- Fix 'org.apache.hc.core5.http.ParseException: Invalid protocol version' under JDK 16+ ([#4827](https://github.com/opensearch-project/OpenSearch/pull/4827))

distribution/src/config/opensearch.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ ${path.logs}
7777
#
7878
# Block initial recovery after a full cluster restart until N nodes are started:
7979
#
80-
#gateway.recover_after_nodes: 3
80+
#gateway.recover_after_data_nodes: 3
8181
#
8282
# For more information, consult the gateway module documentation.
8383
#

server/src/internalClusterTest/java/org/opensearch/action/admin/cluster/stats/ClusterStatsIT.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.opensearch.common.settings.Settings;
4747
import org.opensearch.common.util.concurrent.OpenSearchExecutors;
4848
import org.opensearch.core.common.unit.ByteSizeValue;
49+
import org.opensearch.gateway.GatewayService;
4950
import org.opensearch.monitor.os.OsStats;
5051
import org.opensearch.node.NodeRoleSettings;
5152
import org.opensearch.test.OpenSearchIntegTestCase;
@@ -383,19 +384,18 @@ public void testAllocatedProcessors() throws Exception {
383384
}
384385

385386
public void testClusterStatusWhenStateNotRecovered() throws Exception {
386-
internalCluster().startClusterManagerOnlyNode(Settings.builder().put("gateway.recover_after_nodes", 2).build());
387+
internalCluster().startClusterManagerOnlyNode(
388+
Settings.builder().put(GatewayService.RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 2).build()
389+
);
387390
ClusterStatsResponse response = client().admin()
388391
.cluster()
389392
.prepareClusterStats()
390393
.useAggregatedNodeLevelResponses(randomBoolean())
391394
.get();
392395
assertThat(response.getStatus(), equalTo(ClusterHealthStatus.RED));
393396

394-
if (randomBoolean()) {
395-
internalCluster().startClusterManagerOnlyNode();
396-
} else {
397-
internalCluster().startDataOnlyNode();
398-
}
397+
internalCluster().startDataOnlyNodes(2);
398+
399399
// wait for the cluster status to settle
400400
ensureGreen();
401401
response = client().admin().cluster().prepareClusterStats().useAggregatedNodeLevelResponses(randomBoolean()).get();

server/src/internalClusterTest/java/org/opensearch/action/admin/cluster/tasks/PendingTasksBlocksIT.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void testPendingTasksWithClusterNotRecoveredBlock() throws Exception {
9595
internalCluster().fullRestart(new InternalTestCluster.RestartCallback() {
9696
@Override
9797
public Settings onNodeStopped(String nodeName) {
98-
return Settings.builder().put(GatewayService.RECOVER_AFTER_NODES_SETTING.getKey(), nodeCount + 1).build();
98+
return Settings.builder().put(GatewayService.RECOVER_AFTER_DATA_NODES_SETTING.getKey(), nodeCount + 1).build();
9999
}
100100

101101
@Override

server/src/internalClusterTest/java/org/opensearch/action/admin/indices/exists/IndicesExistsIT.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class IndicesExistsIT extends OpenSearchIntegTestCase {
4949

5050
public void testIndexExistsWithBlocksInPlace() throws IOException {
5151
internalCluster().setBootstrapClusterManagerNodeIndex(0);
52-
Settings settings = Settings.builder().put(GatewayService.RECOVER_AFTER_NODES_SETTING.getKey(), 99).build();
52+
Settings settings = Settings.builder().put(GatewayService.RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 99).build();
5353
String node = internalCluster().startNode(settings);
5454

5555
assertRequestBuilderThrows(

server/src/internalClusterTest/java/org/opensearch/gateway/RecoverAfterNodesIT.java

+3-94
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public Client startNode(Settings.Builder settings) {
7777
public void testRecoverAfterNodes() throws Exception {
7878
internalCluster().setBootstrapClusterManagerNodeIndex(0);
7979
logger.info("--> start node (1)");
80-
Client clientNode1 = startNode(Settings.builder().put("gateway.recover_after_nodes", 3));
80+
Client clientNode1 = startNode(Settings.builder().put(GatewayService.RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 3));
8181
assertThat(
8282
clientNode1.admin()
8383
.cluster()
@@ -92,7 +92,7 @@ public void testRecoverAfterNodes() throws Exception {
9292
);
9393

9494
logger.info("--> start node (2)");
95-
Client clientNode2 = startNode(Settings.builder().put("gateway.recover_after_nodes", 3));
95+
Client clientNode2 = startNode(Settings.builder().put(GatewayService.RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 3));
9696
Thread.sleep(BLOCK_WAIT_TIMEOUT.millis());
9797
assertThat(
9898
clientNode1.admin()
@@ -120,104 +120,13 @@ public void testRecoverAfterNodes() throws Exception {
120120
);
121121

122122
logger.info("--> start node (3)");
123-
Client clientNode3 = startNode(Settings.builder().put("gateway.recover_after_nodes", 3));
123+
Client clientNode3 = startNode(Settings.builder().put(GatewayService.RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 3));
124124

125125
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, clientNode1).isEmpty(), equalTo(true));
126126
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, clientNode2).isEmpty(), equalTo(true));
127127
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, clientNode3).isEmpty(), equalTo(true));
128128
}
129129

130-
public void testRecoverAfterClusterManagerNodes() throws Exception {
131-
internalCluster().setBootstrapClusterManagerNodeIndex(0);
132-
logger.info("--> start cluster_manager_node (1)");
133-
Client clusterManager1 = startNode(Settings.builder().put("gateway.recover_after_master_nodes", 2).put(clusterManagerOnlyNode()));
134-
assertThat(
135-
clusterManager1.admin()
136-
.cluster()
137-
.prepareState()
138-
.setLocal(true)
139-
.execute()
140-
.actionGet()
141-
.getState()
142-
.blocks()
143-
.global(ClusterBlockLevel.METADATA_WRITE),
144-
hasItem(GatewayService.STATE_NOT_RECOVERED_BLOCK)
145-
);
146-
147-
logger.info("--> start data_node (1)");
148-
Client data1 = startNode(Settings.builder().put("gateway.recover_after_master_nodes", 2).put(dataOnlyNode()));
149-
assertThat(
150-
clusterManager1.admin()
151-
.cluster()
152-
.prepareState()
153-
.setLocal(true)
154-
.execute()
155-
.actionGet()
156-
.getState()
157-
.blocks()
158-
.global(ClusterBlockLevel.METADATA_WRITE),
159-
hasItem(GatewayService.STATE_NOT_RECOVERED_BLOCK)
160-
);
161-
assertThat(
162-
data1.admin()
163-
.cluster()
164-
.prepareState()
165-
.setLocal(true)
166-
.execute()
167-
.actionGet()
168-
.getState()
169-
.blocks()
170-
.global(ClusterBlockLevel.METADATA_WRITE),
171-
hasItem(GatewayService.STATE_NOT_RECOVERED_BLOCK)
172-
);
173-
174-
logger.info("--> start data_node (2)");
175-
Client data2 = startNode(Settings.builder().put("gateway.recover_after_master_nodes", 2).put(dataOnlyNode()));
176-
assertThat(
177-
clusterManager1.admin()
178-
.cluster()
179-
.prepareState()
180-
.setLocal(true)
181-
.execute()
182-
.actionGet()
183-
.getState()
184-
.blocks()
185-
.global(ClusterBlockLevel.METADATA_WRITE),
186-
hasItem(GatewayService.STATE_NOT_RECOVERED_BLOCK)
187-
);
188-
assertThat(
189-
data1.admin()
190-
.cluster()
191-
.prepareState()
192-
.setLocal(true)
193-
.execute()
194-
.actionGet()
195-
.getState()
196-
.blocks()
197-
.global(ClusterBlockLevel.METADATA_WRITE),
198-
hasItem(GatewayService.STATE_NOT_RECOVERED_BLOCK)
199-
);
200-
assertThat(
201-
data2.admin()
202-
.cluster()
203-
.prepareState()
204-
.setLocal(true)
205-
.execute()
206-
.actionGet()
207-
.getState()
208-
.blocks()
209-
.global(ClusterBlockLevel.METADATA_WRITE),
210-
hasItem(GatewayService.STATE_NOT_RECOVERED_BLOCK)
211-
);
212-
213-
logger.info("--> start cluster_manager_node (2)");
214-
Client clusterManager2 = startNode(Settings.builder().put("gateway.recover_after_master_nodes", 2).put(clusterManagerOnlyNode()));
215-
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, clusterManager1).isEmpty(), equalTo(true));
216-
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, clusterManager2).isEmpty(), equalTo(true));
217-
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, data1).isEmpty(), equalTo(true));
218-
assertThat(waitForNoBlocksOnNode(BLOCK_WAIT_TIMEOUT, data2).isEmpty(), equalTo(true));
219-
}
220-
221130
public void testRecoverAfterDataNodes() throws Exception {
222131
internalCluster().setBootstrapClusterManagerNodeIndex(0);
223132
logger.info("--> start cluster_manager_node (1)");

server/src/internalClusterTest/java/org/opensearch/gateway/RecoveryFromGatewayIT.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
import static org.opensearch.gateway.GatewayRecoveryTestUtils.corruptShard;
120120
import static org.opensearch.gateway.GatewayRecoveryTestUtils.getDiscoveryNodes;
121121
import static org.opensearch.gateway.GatewayRecoveryTestUtils.prepareRequestMap;
122-
import static org.opensearch.gateway.GatewayService.RECOVER_AFTER_NODES_SETTING;
122+
import static org.opensearch.gateway.GatewayService.RECOVER_AFTER_DATA_NODES_SETTING;
123123
import static org.opensearch.index.query.QueryBuilders.matchAllQuery;
124124
import static org.opensearch.index.query.QueryBuilders.termQuery;
125125
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAcked;
@@ -411,7 +411,7 @@ public void testTwoNodeFirstNodeCleared() throws Exception {
411411
@Override
412412
public Settings onNodeStopped(String nodeName) {
413413
return Settings.builder()
414-
.put(RECOVER_AFTER_NODES_SETTING.getKey(), 2)
414+
.put(RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 2)
415415
.putList(INITIAL_CLUSTER_MANAGER_NODES_SETTING.getKey()) // disable bootstrapping
416416
.build();
417417
}
@@ -436,7 +436,7 @@ public boolean clearData(String nodeName) {
436436

437437
public void testLatestVersionLoaded() throws Exception {
438438
// clean two nodes
439-
List<String> nodes = internalCluster().startNodes(2, Settings.builder().put("gateway.recover_after_nodes", 2).build());
439+
List<String> nodes = internalCluster().startNodes(2, Settings.builder().put(RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 2).build());
440440
Settings node1DataPathSettings = internalCluster().dataPathSettings(nodes.get(0));
441441
Settings node2DataPathSettings = internalCluster().dataPathSettings(nodes.get(1));
442442

@@ -520,8 +520,8 @@ public void testLatestVersionLoaded() throws Exception {
520520
logger.info("--> starting the two nodes back");
521521

522522
internalCluster().startNodes(
523-
Settings.builder().put(node1DataPathSettings).put("gateway.recover_after_nodes", 2).build(),
524-
Settings.builder().put(node2DataPathSettings).put("gateway.recover_after_nodes", 2).build()
523+
Settings.builder().put(node1DataPathSettings).put(RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 2).build(),
524+
Settings.builder().put(node2DataPathSettings).put(RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 2).build()
525525
);
526526

527527
logger.info("--> running cluster_health (wait for the shards to startup)");
@@ -710,7 +710,7 @@ public void testStartedShardFoundIfStateNotYetProcessed() throws Exception {
710710
@Override
711711
public Settings onNodeStopped(String nodeName) throws Exception {
712712
// make sure state is not recovered
713-
return Settings.builder().put(RECOVER_AFTER_NODES_SETTING.getKey(), 2).build();
713+
return Settings.builder().put(RECOVER_AFTER_DATA_NODES_SETTING.getKey(), 2).build();
714714
}
715715
});
716716

server/src/main/java/org/opensearch/common/settings/ClusterSettings.java

-4
Original file line numberDiff line numberDiff line change
@@ -346,11 +346,7 @@ public void apply(Settings value, Settings current, Settings previous) {
346346
NoClusterManagerBlockService.NO_MASTER_BLOCK_SETTING, // deprecated
347347
NoClusterManagerBlockService.NO_CLUSTER_MANAGER_BLOCK_SETTING,
348348
GatewayService.EXPECTED_DATA_NODES_SETTING,
349-
GatewayService.EXPECTED_MASTER_NODES_SETTING,
350-
GatewayService.EXPECTED_NODES_SETTING,
351349
GatewayService.RECOVER_AFTER_DATA_NODES_SETTING,
352-
GatewayService.RECOVER_AFTER_MASTER_NODES_SETTING,
353-
GatewayService.RECOVER_AFTER_NODES_SETTING,
354350
GatewayService.RECOVER_AFTER_TIME_SETTING,
355351
ShardsBatchGatewayAllocator.GATEWAY_ALLOCATOR_BATCH_SIZE,
356352
ShardsBatchGatewayAllocator.PRIMARY_BATCH_ALLOCATOR_TIMEOUT_SETTING,

0 commit comments

Comments
 (0)