@@ -90,8 +90,6 @@ public void testDataNodeRestart() throws Exception {
90
90
.mapToObj (i -> client ().prepareIndex ("test" ).setId (String .valueOf (i )).setSource ("data" , i )).collect (Collectors .toList ()));
91
91
92
92
ensureGreen ("test" );
93
- String reindexNode = internalCluster ().startCoordinatingOnlyNode (Settings .EMPTY );
94
- NodeClient reindexNodeClient = internalCluster ().getInstance (NodeClient .class , reindexNode );
95
93
96
94
ReindexRequest reindexRequest = new ReindexRequest ();
97
95
reindexRequest .setSourceIndices ("test" ).setSourceBatchSize (1 );
@@ -106,12 +104,12 @@ public void testDataNodeRestart() throws Exception {
106
104
107
105
TaskId taskId = new TaskId (response .getTaskId ());
108
106
109
- Set <String > names = Arrays .stream (internalCluster ().getNodeNames ())
107
+ Set <String > reindexNodeNames = Arrays .stream (internalCluster ().getNodeNames ())
110
108
.map (name -> Tuple .tuple (internalCluster ().getInstance (NodeClient .class , name ).getLocalNodeId (), name ))
111
109
.filter (idAndName -> taskId .getNodeId ().equals (idAndName .v1 ())).map (Tuple ::v2 ).collect (Collectors .toSet ());
112
110
113
- assertEquals (1 , names .size ());
114
- String notToRestart = names .iterator ().next ();
111
+ assertEquals (1 , reindexNodeNames .size ());
112
+ String notToRestart = reindexNodeNames .iterator ().next ();
115
113
116
114
internalCluster ().getInstances (NodeClient .class );
117
115
assertBusy (() -> {
@@ -123,19 +121,21 @@ public void testDataNodeRestart() throws Exception {
123
121
assertThat (client ().admin ().cluster ().prepareListTasks ().setActions (SearchAction .NAME ).get ().getTasks (), Matchers .empty ());
124
122
}, 30 , TimeUnit .SECONDS );
125
123
124
+ Set <String > restartableNodes = internalCluster ().nodesInclude ("test" )
125
+ .stream ().filter (id -> id .equals (notToRestart ) == false ).collect (Collectors .toSet ());
126
126
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
+ });
139
139
}
140
140
141
141
rethrottle ().setTaskId (taskId )
0 commit comments