Skip to content

Commit 7d4f074

Browse files
Fix PrevalidateNodeRemovalIT
1 parent db8dac7 commit 7d4f074

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

server/src/internalClusterTest/java/org/elasticsearch/cluster/PrevalidateNodeRemovalIT.java

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)