Skip to content

Commit 2d696fc

Browse files
Reindex resilience against red shard test (#48342)
Now that #45739 has fixed that RED shards are no longer rarely silently ignored when using `allow_partial_search_results=false`, we can reenable the parts of the resilience testing that verifies that reindex survives RED source shards. Relates #42612
1 parent 4564247 commit 2d696fc

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

modules/reindex/src/test/java/org/elasticsearch/index/reindex/ReindexResilientSearchIT.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ public void testDataNodeRestart() throws Exception {
9090
.mapToObj(i -> client().prepareIndex("test").setId(String.valueOf(i)).setSource("data", i)).collect(Collectors.toList()));
9191

9292
ensureGreen("test");
93-
String reindexNode = internalCluster().startCoordinatingOnlyNode(Settings.EMPTY);
94-
NodeClient reindexNodeClient = internalCluster().getInstance(NodeClient.class, reindexNode);
9593

9694
ReindexRequest reindexRequest = new ReindexRequest();
9795
reindexRequest.setSourceIndices("test").setSourceBatchSize(1);
@@ -106,12 +104,12 @@ public void testDataNodeRestart() throws Exception {
106104

107105
TaskId taskId = new TaskId(response.getTaskId());
108106

109-
Set<String> names = Arrays.stream(internalCluster().getNodeNames())
107+
Set<String> reindexNodeNames = Arrays.stream(internalCluster().getNodeNames())
110108
.map(name -> Tuple.tuple(internalCluster().getInstance(NodeClient.class, name).getLocalNodeId(), name))
111109
.filter(idAndName -> taskId.getNodeId().equals(idAndName.v1())).map(Tuple::v2).collect(Collectors.toSet());
112110

113-
assertEquals(1, names.size());
114-
String notToRestart = names.iterator().next();
111+
assertEquals(1, reindexNodeNames.size());
112+
String notToRestart = reindexNodeNames.iterator().next();
115113

116114
internalCluster().getInstances(NodeClient.class);
117115
assertBusy(() -> {
@@ -123,19 +121,21 @@ public void testDataNodeRestart() throws Exception {
123121
assertThat(client().admin().cluster().prepareListTasks().setActions(SearchAction.NAME).get().getTasks(), Matchers.empty());
124122
}, 30, TimeUnit.SECONDS);
125123

124+
Set<String> restartableNodes = internalCluster().nodesInclude("test")
125+
.stream().filter(id -> id.equals(notToRestart) == false).collect(Collectors.toSet());
126126
for (int i = 0; i < randomIntBetween(1,5); ++i) {
127-
// todo: replace following two lines with below once search fails on RED every time.
128-
String nodeToRestart = randomFrom(internalCluster().nodesInclude("test")
129-
.stream().filter(id -> id.equals(notToRestart) == false).collect(Collectors.toSet()));
130-
internalCluster().restartNode(nodeToRestart, new InternalTestCluster.RestartCallback());
131-
ensureGreen();
132-
// internalCluster().restartRandomDataNode(new InternalTestCluster.RestartCallback() {
133-
// @Override
134-
// public Settings onNodeStopped(String nodeName) throws Exception {
135-
// internalCluster().restartRandomDataNode();
136-
// return super.onNodeStopped(nodeName);
137-
// }
138-
// });
127+
String node1ToRestart = randomFrom(restartableNodes);
128+
internalCluster().restartNode(node1ToRestart, new InternalTestCluster.RestartCallback() {
129+
@Override
130+
public Settings onNodeStopped(String nodeName) throws Exception {
131+
if (restartableNodes.size() > 1) {
132+
String node2ToRestart = randomValueOtherThan(node1ToRestart, () -> randomFrom(restartableNodes));
133+
logger.info("--> restarting second node: " + node2ToRestart);
134+
internalCluster().restartNode(node2ToRestart, new InternalTestCluster.RestartCallback());
135+
}
136+
return super.onNodeStopped(nodeName);
137+
}
138+
});
139139
}
140140

141141
rethrottle().setTaskId(taskId)

0 commit comments

Comments
 (0)