45
45
import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertAcked ;
46
46
import static org .hamcrest .Matchers .equalTo ;
47
47
48
- @ TestLogging ("org.elasticsearch.xpack.ccr:TRACE,org.elasticsearch.index.shard:DEBUG" )
48
+ @ TestLogging ("org.elasticsearch.xpack.ccr:TRACE,org.elasticsearch.xpack.ccr.action.ShardChangesAction:DEBUG,"
49
+ + "org.elasticsearch.index.shard:TRACE" )
49
50
public class FollowerFailOverIT extends CcrIntegTestCase {
50
51
51
52
@ Override
52
53
protected boolean reuseClusters () {
53
54
return false ;
54
55
}
55
56
56
- @ AwaitsFix (bugUrl ="https://github.com/elastic/elasticsearch/issues/38633" )
57
57
public void testFailOverOnFollower () throws Exception {
58
+ final String leaderIndex = "leader_test_failover" ;
59
+ final String followerIndex = "follower_test_failover" ;
58
60
int numberOfReplicas = between (1 , 2 );
59
61
getFollowerCluster ().startMasterOnlyNode ();
60
62
getFollowerCluster ().ensureAtLeastNumDataNodes (numberOfReplicas + between (1 , 2 ));
61
63
String leaderIndexSettings = getIndexSettings (1 , numberOfReplicas ,
62
64
singletonMap (IndexSettings .INDEX_SOFT_DELETES_SETTING .getKey (), "true" ));
63
- assertAcked (leaderClient ().admin ().indices ().prepareCreate ("leader-index" ).setSource (leaderIndexSettings , XContentType .JSON ));
65
+ assertAcked (leaderClient ().admin ().indices ().prepareCreate (leaderIndex ).setSource (leaderIndexSettings , XContentType .JSON ));
64
66
AtomicBoolean stopped = new AtomicBoolean ();
65
67
Thread [] threads = new Thread [between (1 , 8 )];
66
68
AtomicInteger docID = new AtomicInteger ();
@@ -77,20 +79,20 @@ public void testFailOverOnFollower() throws Exception {
77
79
}
78
80
if (frequently ()) {
79
81
String id = Integer .toString (frequently () ? docID .incrementAndGet () : between (0 , 10 )); // sometimes update
80
- IndexResponse indexResponse = leaderClient ().prepareIndex ("leader-index" , "doc" , id )
82
+ IndexResponse indexResponse = leaderClient ().prepareIndex (leaderIndex , "doc" , id )
81
83
.setSource ("{\" f\" :" + id + "}" , XContentType .JSON ).get ();
82
- logger .info ("--> index id={} seq_no={}" , indexResponse .getId (), indexResponse .getSeqNo ());
84
+ logger .info ("--> index {} id={} seq_no={}" , leaderIndex , indexResponse .getId (), indexResponse .getSeqNo ());
83
85
} else {
84
86
String id = Integer .toString (between (0 , docID .get ()));
85
- DeleteResponse deleteResponse = leaderClient ().prepareDelete ("leader-index" , "doc" , id ).get ();
86
- logger .info ("--> delete id={} seq_no={}" , deleteResponse .getId (), deleteResponse .getSeqNo ());
87
+ DeleteResponse deleteResponse = leaderClient ().prepareDelete (leaderIndex , "doc" , id ).get ();
88
+ logger .info ("--> delete {} id={} seq_no={}" , leaderIndex , deleteResponse .getId (), deleteResponse .getSeqNo ());
87
89
}
88
90
}
89
91
});
90
92
threads [i ].start ();
91
93
}
92
94
availableDocs .release (between (100 , 200 ));
93
- PutFollowAction .Request follow = putFollow ("leader-index" , "follower-index" );
95
+ PutFollowAction .Request follow = putFollow (leaderIndex , followerIndex );
94
96
follow .getParameters ().setMaxReadRequestOperationCount (randomIntBetween (32 , 2048 ));
95
97
follow .getParameters ().setMaxReadRequestSize (new ByteSizeValue (randomIntBetween (1 , 4096 ), ByteSizeUnit .KB ));
96
98
follow .getParameters ().setMaxOutstandingReadRequests (randomIntBetween (1 , 10 ));
@@ -99,27 +101,27 @@ public void testFailOverOnFollower() throws Exception {
99
101
follow .getParameters ().setMaxOutstandingWriteRequests (randomIntBetween (1 , 10 ));
100
102
logger .info ("--> follow request {}" , Strings .toString (follow ));
101
103
followerClient ().execute (PutFollowAction .INSTANCE , follow ).get ();
102
- disableDelayedAllocation ("follower-index" );
103
- ensureFollowerGreen ("follower-index" );
104
- awaitGlobalCheckpointAtLeast (followerClient (), new ShardId (resolveFollowerIndex ("follower-index" ), 0 ), between (30 , 80 ));
104
+ disableDelayedAllocation (followerIndex );
105
+ ensureFollowerGreen (followerIndex );
106
+ awaitGlobalCheckpointAtLeast (followerClient (), new ShardId (resolveFollowerIndex (followerIndex ), 0 ), between (30 , 80 ));
105
107
final ClusterState clusterState = getFollowerCluster ().clusterService ().state ();
106
- for (ShardRouting shardRouting : clusterState .routingTable ().allShards ("follower-index" )) {
108
+ for (ShardRouting shardRouting : clusterState .routingTable ().allShards (followerIndex )) {
107
109
if (shardRouting .primary ()) {
108
110
DiscoveryNode assignedNode = clusterState .nodes ().get (shardRouting .currentNodeId ());
109
111
getFollowerCluster ().restartNode (assignedNode .getName (), new InternalTestCluster .RestartCallback ());
110
112
break ;
111
113
}
112
114
}
113
115
availableDocs .release (between (50 , 200 ));
114
- ensureFollowerGreen ("follower-index" );
116
+ ensureFollowerGreen (followerIndex );
115
117
availableDocs .release (between (50 , 200 ));
116
- awaitGlobalCheckpointAtLeast (followerClient (), new ShardId (resolveFollowerIndex ("follower-index" ), 0 ), between (100 , 150 ));
118
+ awaitGlobalCheckpointAtLeast (followerClient (), new ShardId (resolveFollowerIndex (followerIndex ), 0 ), between (100 , 150 ));
117
119
stopped .set (true );
118
120
for (Thread thread : threads ) {
119
121
thread .join ();
120
122
}
121
- assertIndexFullyReplicatedToFollower ("leader-index" , "follower-index" );
122
- pauseFollow ("follower-index" );
123
+ assertIndexFullyReplicatedToFollower (leaderIndex , followerIndex );
124
+ pauseFollow (followerIndex );
123
125
}
124
126
125
127
@ AwaitsFix (bugUrl = "https://github.com/elastic/elasticsearch/issues/33337" )
0 commit comments