@@ -179,28 +179,35 @@ public void testNodeRemovalFromRedClusterWithTimeout() throws Exception {
179179 // make it red!
180180 internalCluster ().stopNode (node1 );
181181 ensureRed (indexName );
182+ CountDownLatch stallPrevalidateShardPathActionLatch = new CountDownLatch (1 );
182183 MockTransportService .getInstance (node2 )
183184 .addRequestHandlingBehavior (TransportPrevalidateShardPathAction .ACTION_NAME + "[n]" , (handler , request , channel , task ) -> {
184185 logger .info ("drop the check shards request" );
186+ stallPrevalidateShardPathActionLatch .await ();
187+ handler .messageReceived (request , channel , task );
185188 });
186- PrevalidateNodeRemovalRequest req = PrevalidateNodeRemovalRequest .builder ()
187- .setNames (node2 )
188- .build (TEST_REQUEST_TIMEOUT )
189- .masterNodeTimeout (TimeValue .timeValueSeconds (1 ))
190- .timeout (TimeValue .timeValueSeconds (1 ));
191- PrevalidateNodeRemovalResponse resp = client ().execute (PrevalidateNodeRemovalAction .INSTANCE , req ).get ();
192- assertFalse ("prevalidation result should return false" , resp .getPrevalidation ().isSafe ());
193- String node2Id = getNodeId (node2 );
194- assertThat (
195- resp .getPrevalidation ().message (),
196- equalTo ("cannot prevalidate removal of nodes with the following IDs: [" + node2Id + "]" )
197- );
198- assertThat (resp .getPrevalidation ().nodes ().size (), equalTo (1 ));
199- NodesRemovalPrevalidation .NodeResult nodeResult = resp .getPrevalidation ().nodes ().get (0 );
200- assertThat (nodeResult .name (), equalTo (node2 ));
201- assertFalse (nodeResult .result ().isSafe ());
202- assertThat (nodeResult .result ().message (), startsWith ("failed contacting the node" ));
203- assertThat (nodeResult .result ().reason (), equalTo (NodesRemovalPrevalidation .Reason .UNABLE_TO_VERIFY ));
189+ try {
190+ PrevalidateNodeRemovalRequest req = PrevalidateNodeRemovalRequest .builder ()
191+ .setNames (node2 )
192+ .build (TEST_REQUEST_TIMEOUT )
193+ .masterNodeTimeout (TimeValue .timeValueSeconds (1 ))
194+ .timeout (TimeValue .timeValueSeconds (1 ));
195+ PrevalidateNodeRemovalResponse resp = client ().execute (PrevalidateNodeRemovalAction .INSTANCE , req ).get ();
196+ assertFalse ("prevalidation result should return false" , resp .getPrevalidation ().isSafe ());
197+ String node2Id = getNodeId (node2 );
198+ assertThat (
199+ resp .getPrevalidation ().message (),
200+ equalTo ("cannot prevalidate removal of nodes with the following IDs: [" + node2Id + "]" )
201+ );
202+ assertThat (resp .getPrevalidation ().nodes ().size (), equalTo (1 ));
203+ NodesRemovalPrevalidation .NodeResult nodeResult = resp .getPrevalidation ().nodes ().get (0 );
204+ assertThat (nodeResult .name (), equalTo (node2 ));
205+ assertFalse (nodeResult .result ().isSafe ());
206+ assertThat (nodeResult .result ().message (), startsWith ("failed contacting the node" ));
207+ assertThat (nodeResult .result ().reason (), equalTo (NodesRemovalPrevalidation .Reason .UNABLE_TO_VERIFY ));
208+ } finally {
209+ stallPrevalidateShardPathActionLatch .countDown ();
210+ }
204211 }
205212
206213 private void ensureRed (String indexName ) throws Exception {
0 commit comments