Skip to content

Commit 81e07fb

Browse files
committed
Pipe IT: Stabilize table model leader stop test
1 parent 44d4f6d commit 81e07fb

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/enhanced/IoTDBPipeClusterIT.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,9 @@ public void testPipeAfterDataRegionLeaderStop() {
313313
TableModelUtils.insertData("test", "test", 100, 200, senderEnv);
314314

315315
TableModelUtils.insertData("test1", "test1", 100, 200, senderEnv);
316+
// Avoid electing a stale follower after stopping the current test1 leader.
317+
flushTableDataRegionReplicasAfterReplicationComplete(
318+
senderEnv, Collections.singletonList("test1"));
316319

317320
final int leaderIndex = restartTableDataRegionLeader(client, "test1");
318321
if (leaderIndex == -1) { // ensure the leader is stopped
@@ -324,7 +327,10 @@ public void testPipeAfterDataRegionLeaderStop() {
324327
TableModelUtils.insertData("test1", "test1", 200, 300, senderEnv);
325328

326329
TableModelUtils.assertData("test", "test", 0, 300, receiverEnv, handleFailure);
327-
waitForTableDataRegionReplicationComplete(Arrays.asList("test", "test1"));
330+
flushTableDataRegionReplicasAfterReplicationComplete(
331+
senderEnv, Arrays.asList("test", "test1"));
332+
flushTableDataRegionReplicasAfterReplicationComplete(
333+
receiverEnv, Collections.singletonList("test"));
328334
}
329335

330336
try {
@@ -428,14 +434,22 @@ private int restartTableDataRegionLeader(
428434
return -1;
429435
}
430436

431-
private void waitForTableDataRegionReplicationComplete(final List<String> databases) {
437+
private void flushTableDataRegionReplicasAfterReplicationComplete(
438+
final BaseEnv env, final List<String> databases) {
439+
waitForTableDataRegionReplicationComplete(env, databases);
440+
TestUtils.executeNonQueryWithRetry(env, "flush");
441+
waitForTableDataRegionReplicationComplete(env, databases);
442+
}
443+
444+
private void waitForTableDataRegionReplicationComplete(
445+
final BaseEnv env, final List<String> databases) {
432446
await()
433447
.pollInterval(500, TimeUnit.MILLISECONDS)
434448
.atMost(2, TimeUnit.MINUTES)
435449
.untilAsserted(
436450
() -> {
437451
try (final SyncConfigNodeIServiceClient client =
438-
(SyncConfigNodeIServiceClient) senderEnv.getLeaderConfigNodeConnection()) {
452+
(SyncConfigNodeIServiceClient) env.getLeaderConfigNodeConnection()) {
439453
final List<TRegionInfo> leaderRegionInfoList =
440454
showTableDataRegionLeaders(databases, client);
441455
Assert.assertFalse(
@@ -444,14 +458,14 @@ private void waitForTableDataRegionReplicationComplete(final List<String> databa
444458

445459
for (final TRegionInfo regionInfo : leaderRegionInfoList) {
446460
final DataNodeWrapper leaderNode =
447-
findDataNodeWrapperByPort(regionInfo.getClientRpcPort());
461+
findDataNodeWrapperByPort(env, regionInfo.getClientRpcPort());
448462
final String metricsUrl =
449463
"http://"
450464
+ leaderNode.getIp()
451465
+ ":"
452466
+ leaderNode.getMetricPort()
453467
+ "/metrics";
454-
final String metricsContent = senderEnv.getUrlContent(metricsUrl, null);
468+
final String metricsContent = env.getUrlContent(metricsUrl, null);
455469
Assert.assertNotNull(
456470
"Failed to fetch metrics from leader DataNode at " + metricsUrl,
457471
metricsContent);
@@ -480,8 +494,8 @@ private List<TRegionInfo> showTableDataRegionLeaders(
480494
return result;
481495
}
482496

483-
private DataNodeWrapper findDataNodeWrapperByPort(final int port) {
484-
for (final DataNodeWrapper dataNodeWrapper : senderEnv.getDataNodeWrapperList()) {
497+
private DataNodeWrapper findDataNodeWrapperByPort(final BaseEnv env, final int port) {
498+
for (final DataNodeWrapper dataNodeWrapper : env.getDataNodeWrapperList()) {
485499
if (dataNodeWrapper.getPort() == port) {
486500
return dataNodeWrapper;
487501
}

0 commit comments

Comments
 (0)