@@ -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