Skip to content

Commit 2077f9f

Browse files
committed
Reset mock transport service in CcrRetentionLeaseIT (#42600)
testRetentionLeaseIsAddedIfItDisappearsWhileFollowing does not reset the mock transport service after test. Surviving transport interceptors from that test can sneaky remove retention leases and make other tests fail. Closes #39331 Closes #39509 Closes #41428 Closes #41679 Closes #41737 Closes #41756
1 parent ab832c4 commit 2077f9f

File tree

1 file changed

+46
-41
lines changed

1 file changed

+46
-41
lines changed

x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/ccr/CcrRetentionLeaseIT.java

+46-41
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
package org.elasticsearch.xpack.ccr;
88

9-
import com.carrotsearch.hppc.cursors.ObjectCursor;
109
import org.elasticsearch.ElasticsearchException;
1110
import org.elasticsearch.action.ActionListener;
1211
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
@@ -44,7 +43,6 @@
4443
import org.elasticsearch.plugins.Plugin;
4544
import org.elasticsearch.snapshots.RestoreInfo;
4645
import org.elasticsearch.snapshots.RestoreService;
47-
import org.elasticsearch.test.junit.annotations.TestLogging;
4846
import org.elasticsearch.test.transport.MockTransportService;
4947
import org.elasticsearch.transport.ConnectTransportException;
5048
import org.elasticsearch.transport.RemoteTransportException;
@@ -88,7 +86,6 @@
8886
import static org.hamcrest.Matchers.greaterThan;
8987
import static org.hamcrest.Matchers.hasSize;
9088

91-
@TestLogging(value = "org.elasticsearch.xpack.ccr:trace,org.elasticsearch.indices.recovery:trace,org.elasticsearch.index.seqno:debug")
9289
public class CcrRetentionLeaseIT extends CcrIntegTestCase {
9390

9491
public static final class RetentionLeaseRenewIntervalSettingPlugin extends Plugin {
@@ -224,9 +221,9 @@ public void testRetentionLeaseIsRenewedDuringRecovery() throws Exception {
224221

225222
// block the recovery from completing; this ensures the background sync is still running
226223
final ClusterStateResponse followerClusterState = followerClient().admin().cluster().prepareState().clear().setNodes(true).get();
227-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getNodes().values()) {
224+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
228225
final MockTransportService senderTransportService =
229-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
226+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
230227
senderTransportService.addSendBehavior(
231228
(connection, requestId, action, request, options) -> {
232229
if (ClearCcrRestoreSessionAction.NAME.equals(action)
@@ -248,9 +245,9 @@ public void testRetentionLeaseIsRenewedDuringRecovery() throws Exception {
248245
assertRetentionLeaseRenewal(numberOfShards, numberOfReplicas, followerIndex, leaderIndex);
249246
latch.countDown();
250247
} finally {
251-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getDataNodes().values()) {
248+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
252249
final MockTransportService senderTransportService =
253-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
250+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
254251
senderTransportService.clearAllRules();
255252
}
256253
}
@@ -405,9 +402,9 @@ public void testUnfollowRemovesRetentionLeases() throws Exception {
405402

406403
final ClusterStateResponse followerClusterState = followerClient().admin().cluster().prepareState().clear().setNodes(true).get();
407404
try {
408-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getNodes().values()) {
405+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
409406
final MockTransportService senderTransportService =
410-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
407+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
411408
senderTransportService.addSendBehavior(
412409
(connection, requestId, action, request, options) -> {
413410
if (RetentionLeaseActions.Remove.ACTION_NAME.equals(action)
@@ -456,9 +453,9 @@ public void testUnfollowRemovesRetentionLeases() throws Exception {
456453
assertThat(Strings.toString(shardStats), shardStats.getRetentionLeaseStats().retentionLeases().leases(), empty());
457454
}
458455
} finally {
459-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getDataNodes().values()) {
456+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
460457
final MockTransportService senderTransportService =
461-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
458+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
462459
senderTransportService.clearAllRules();
463460
}
464461
}
@@ -488,9 +485,9 @@ public void testUnfollowFailsToRemoveRetentionLeases() throws Exception {
488485

489486
final ClusterStateResponse followerClusterState = followerClient().admin().cluster().prepareState().clear().setNodes(true).get();
490487
try {
491-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getNodes().values()) {
488+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
492489
final MockTransportService senderTransportService =
493-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
490+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
494491
senderTransportService.addSendBehavior(
495492
(connection, requestId, action, request, options) -> {
496493
if (RetentionLeaseActions.Remove.ACTION_NAME.equals(action)
@@ -526,9 +523,9 @@ public void testUnfollowFailsToRemoveRetentionLeases() throws Exception {
526523
getLeaderCluster().getClusterName(),
527524
new Index(leaderIndex, leaderUUID))));
528525
} finally {
529-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getDataNodes().values()) {
526+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
530527
final MockTransportService senderTransportService =
531-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
528+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
532529
senderTransportService.clearAllRules();
533530
}
534531
}
@@ -766,35 +763,36 @@ public void testRetentionLeaseIsAddedIfItDisappearsWhileFollowing() throws Excep
766763
final CountDownLatch latch = new CountDownLatch(1);
767764

768765
final ClusterStateResponse followerClusterState = followerClient().admin().cluster().prepareState().clear().setNodes(true).get();
769-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getNodes().values()) {
770-
final MockTransportService senderTransportService =
771-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
772-
senderTransportService.addSendBehavior(
766+
try {
767+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
768+
final MockTransportService senderTransportService =
769+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
770+
senderTransportService.addSendBehavior(
773771
(connection, requestId, action, request, options) -> {
774772
if (RetentionLeaseActions.Renew.ACTION_NAME.equals(action)
775-
|| TransportActionProxy.getProxyAction(RetentionLeaseActions.Renew.ACTION_NAME).equals(action)) {
773+
|| TransportActionProxy.getProxyAction(RetentionLeaseActions.Renew.ACTION_NAME).equals(action)) {
776774
senderTransportService.clearAllRules();
777775
final RetentionLeaseActions.RenewRequest renewRequest = (RetentionLeaseActions.RenewRequest) request;
778776
final String primaryShardNodeId =
779-
getLeaderCluster()
780-
.clusterService()
781-
.state()
782-
.routingTable()
783-
.index(leaderIndex)
784-
.shard(renewRequest.getShardId().id())
785-
.primaryShard()
786-
.currentNodeId();
777+
getLeaderCluster()
778+
.clusterService()
779+
.state()
780+
.routingTable()
781+
.index(leaderIndex)
782+
.shard(renewRequest.getShardId().id())
783+
.primaryShard()
784+
.currentNodeId();
787785
final String primaryShardNodeName =
788-
getLeaderCluster().clusterService().state().nodes().get(primaryShardNodeId).getName();
786+
getLeaderCluster().clusterService().state().nodes().get(primaryShardNodeId).getName();
789787
final IndexShard primary =
790-
getLeaderCluster()
791-
.getInstance(IndicesService.class, primaryShardNodeName)
792-
.getShardOrNull(renewRequest.getShardId());
788+
getLeaderCluster()
789+
.getInstance(IndicesService.class, primaryShardNodeName)
790+
.getShardOrNull(renewRequest.getShardId());
793791
final CountDownLatch innerLatch = new CountDownLatch(1);
794792
// this forces the background renewal from following to face a retention lease not found exception
795793
primary.removeRetentionLease(
796-
getRetentionLeaseId(followerIndex, leaderIndex),
797-
ActionListener.wrap(r -> innerLatch.countDown(), e -> fail(e.toString())));
794+
getRetentionLeaseId(followerIndex, leaderIndex),
795+
ActionListener.wrap(r -> innerLatch.countDown(), e -> fail(e.toString())));
798796

799797
try {
800798
innerLatch.await();
@@ -807,11 +805,18 @@ public void testRetentionLeaseIsAddedIfItDisappearsWhileFollowing() throws Excep
807805
}
808806
connection.sendRequest(requestId, action, request, options);
809807
});
810-
}
808+
}
811809

812-
latch.await();
810+
latch.await();
813811

814-
assertRetentionLeaseRenewal(numberOfShards, numberOfReplicas, followerIndex, leaderIndex);
812+
assertRetentionLeaseRenewal(numberOfShards, numberOfReplicas, followerIndex, leaderIndex);
813+
} finally {
814+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
815+
final MockTransportService senderTransportService =
816+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
817+
senderTransportService.clearAllRules();
818+
}
819+
}
815820
}
816821

817822
/**
@@ -858,9 +863,9 @@ public void testPeriodicRenewalDoesNotAddRetentionLeaseAfterUnfollow() throws Ex
858863
final ClusterStateResponse followerClusterState = followerClient().admin().cluster().prepareState().clear().setNodes(true).get();
859864

860865
try {
861-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getNodes().values()) {
866+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
862867
final MockTransportService senderTransportService =
863-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
868+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
864869
senderTransportService.addSendBehavior(
865870
(connection, requestId, action, request, options) -> {
866871
if (RetentionLeaseActions.Renew.ACTION_NAME.equals(action)
@@ -914,9 +919,9 @@ public void onResponseReceived(
914919
assertThat(Strings.toString(shardStats), shardStats.getRetentionLeaseStats().retentionLeases().leases(), empty());
915920
}
916921
} finally {
917-
for (final ObjectCursor<DiscoveryNode> senderNode : followerClusterState.getState().nodes().getDataNodes().values()) {
922+
for (final DiscoveryNode senderNode : followerClusterState.getState().nodes()) {
918923
final MockTransportService senderTransportService =
919-
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.value.getName());
924+
(MockTransportService) getFollowerCluster().getInstance(TransportService.class, senderNode.getName());
920925
senderTransportService.clearAllRules();
921926
}
922927
}

0 commit comments

Comments
 (0)