mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-08 22:14:59 +00:00
Simplify CcrRetentionLeaseIT#testForgetFollower
This test was more complicated than necessary, where we were capturing requests to prevent removal of retention leases, so that our forget follower request could remove the retention leases instead. Instead, a pause is enough to ensure that the retention leases are not re-added after we remove them by the forget follower request. This commit simplifies this test, and should remove some spurious failures. Relates #39850
This commit is contained in:
parent
c23ff0803e
commit
6675bafc49
@ -937,60 +937,29 @@ public class CcrRetentionLeaseIT extends CcrIntegTestCase {
|
|||||||
pauseFollow(followerIndex);
|
pauseFollow(followerIndex);
|
||||||
followerClient().admin().indices().close(new CloseIndexRequest(followerIndex)).actionGet();
|
followerClient().admin().indices().close(new CloseIndexRequest(followerIndex)).actionGet();
|
||||||
|
|
||||||
final ClusterStateResponse followerClusterState = followerClient().admin().cluster().prepareState().clear().setNodes(true).get();
|
final ClusterStateResponse followerIndexClusterState =
|
||||||
try {
|
followerClient().admin().cluster().prepareState().clear().setMetaData(true).setIndices(followerIndex).get();
|
||||||
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getNodes().values()) {
|
final String followerUUID = followerIndexClusterState.getState().metaData().index(followerIndex).getIndexUUID();
|
||||||
final MockTransportService senderTransportService =
|
|
||||||
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
|
|
||||||
senderTransportService.addSendBehavior(
|
|
||||||
(connection, requestId, action, request, options) -> {
|
|
||||||
if (RetentionLeaseActions.Remove.ACTION_NAME.equals(action)
|
|
||||||
|| TransportActionProxy.getProxyAction(RetentionLeaseActions.Remove.ACTION_NAME).equals(action)) {
|
|
||||||
final RetentionLeaseActions.RemoveRequest removeRequest = (RetentionLeaseActions.RemoveRequest) request;
|
|
||||||
if (randomBoolean()) {
|
|
||||||
throw new ConnectTransportException(connection.getNode(), "connection failed");
|
|
||||||
} else {
|
|
||||||
throw new IndexShardClosedException(removeRequest.getShardId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
connection.sendRequest(requestId, action, request, options);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
expectThrows(
|
final BroadcastResponse forgetFollowerResponse = leaderClient().execute(
|
||||||
ElasticsearchException.class,
|
ForgetFollowerAction.INSTANCE,
|
||||||
() -> followerClient().execute(UnfollowAction.INSTANCE, new UnfollowAction.Request(followerIndex)).actionGet());
|
new ForgetFollowerAction.Request(
|
||||||
|
getFollowerCluster().getClusterName(),
|
||||||
|
followerIndex,
|
||||||
|
followerUUID,
|
||||||
|
"leader_cluster",
|
||||||
|
leaderIndex)).actionGet();
|
||||||
|
|
||||||
final ClusterStateResponse followerIndexClusterState =
|
assertThat(forgetFollowerResponse.getTotalShards(), equalTo(numberOfShards));
|
||||||
followerClient().admin().cluster().prepareState().clear().setMetaData(true).setIndices(followerIndex).get();
|
assertThat(forgetFollowerResponse.getSuccessfulShards(), equalTo(numberOfShards));
|
||||||
final String followerUUID = followerIndexClusterState.getState().metaData().index(followerIndex).getIndexUUID();
|
assertThat(forgetFollowerResponse.getFailedShards(), equalTo(0));
|
||||||
|
assertThat(forgetFollowerResponse.getShardFailures(), emptyArray());
|
||||||
|
|
||||||
final BroadcastResponse forgetFollowerResponse = leaderClient().execute(
|
final IndicesStatsResponse afterForgetFollowerStats =
|
||||||
ForgetFollowerAction.INSTANCE,
|
leaderClient().admin().indices().stats(new IndicesStatsRequest().clear().indices(leaderIndex)).actionGet();
|
||||||
new ForgetFollowerAction.Request(
|
final List<ShardStats> afterForgetFollowerShardsStats = getShardsStats(afterForgetFollowerStats);
|
||||||
getFollowerCluster().getClusterName(),
|
for (final ShardStats shardStats : afterForgetFollowerShardsStats) {
|
||||||
followerIndex,
|
assertThat(shardStats.getRetentionLeaseStats().retentionLeases().leases(), empty());
|
||||||
followerUUID,
|
|
||||||
"leader_cluster",
|
|
||||||
leaderIndex)).actionGet();
|
|
||||||
|
|
||||||
assertThat(forgetFollowerResponse.getTotalShards(), equalTo(numberOfShards));
|
|
||||||
assertThat(forgetFollowerResponse.getSuccessfulShards(), equalTo(numberOfShards));
|
|
||||||
assertThat(forgetFollowerResponse.getFailedShards(), equalTo(0));
|
|
||||||
assertThat(forgetFollowerResponse.getShardFailures(), emptyArray());
|
|
||||||
|
|
||||||
final IndicesStatsResponse afterForgetFollowerStats =
|
|
||||||
leaderClient().admin().indices().stats(new IndicesStatsRequest().clear().indices(leaderIndex)).actionGet();
|
|
||||||
final List<ShardStats> afterForgetFollowerShardsStats = getShardsStats(afterForgetFollowerStats);
|
|
||||||
for (final ShardStats shardStats : afterForgetFollowerShardsStats) {
|
|
||||||
assertThat(shardStats.getRetentionLeaseStats().retentionLeases().leases(), empty());
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getDataNodes().values()) {
|
|
||||||
final MockTransportService senderTransportService =
|
|
||||||
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
|
|
||||||
senderTransportService.clearAllRules();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user