Skip to content

Commit 62cce8c

Browse files
committed
fix
Signed-off-by: gengjun-git <gengjun@starrocks.com>
1 parent 1851e00 commit 62cce8c

File tree

1 file changed

+43
-52
lines changed

1 file changed

+43
-52
lines changed

fe/fe-core/src/test/java/com/starrocks/ha/BDBHATest.java

Lines changed: 43 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616

1717
import com.starrocks.journal.bdbje.BDBEnvironment;
1818
import com.starrocks.journal.bdbje.BDBJEJournal;
19-
import com.starrocks.persist.metablock.SRMetaBlockReader;
20-
import com.starrocks.persist.metablock.SRMetaBlockReaderV2;
19+
import com.starrocks.persist.DropFrontendInfo;
2120
import com.starrocks.server.GlobalStateMgr;
2221
import com.starrocks.server.NodeMgr;
2322
import com.starrocks.server.RunMode;
@@ -39,61 +38,53 @@ public static void beforeClass() {
3938
public void testAddAndRemoveUnstableNode() {
4039
BDBJEJournal journal = (BDBJEJournal) GlobalStateMgr.getCurrentState().getJournal();
4140
BDBEnvironment environment = journal.getBdbEnvironment();
42-
43-
BDBHA ha = (BDBHA) GlobalStateMgr.getCurrentState().getHaProtocol();
44-
ha.addUnstableNode("host1", 3);
45-
Assertions.assertEquals(2,
46-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
47-
48-
ha.addUnstableNode("host2", 4);
49-
Assertions.assertEquals(2,
50-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
51-
52-
ha.removeUnstableNode("host1", 4);
53-
Assertions.assertEquals(3,
54-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
55-
56-
ha.removeUnstableNode("host2", 4);
57-
Assertions.assertEquals(0,
58-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
59-
}
60-
61-
@Test
62-
public void testAddAndDropFollower() throws Exception {
63-
BDBJEJournal journal = (BDBJEJournal) GlobalStateMgr.getCurrentState().getJournal();
64-
BDBEnvironment environment = journal.getBdbEnvironment();
6541
NodeMgr nodeMgr = GlobalStateMgr.getCurrentState().getNodeMgr();
6642

67-
// add two followers
68-
nodeMgr.addFrontend(FrontendNodeType.FOLLOWER, "192.168.2.3", 9010);
69-
Assertions.assertEquals(1,
70-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
71-
nodeMgr.addFrontend(FrontendNodeType.FOLLOWER, "192.168.2.4", 9010);
72-
Assertions.assertEquals(1,
73-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
43+
BDBHA ha = (BDBHA) GlobalStateMgr.getCurrentState().getHaProtocol();
44+
int baselineFollowerCnt = nodeMgr.getFollowerCnt();
45+
Frontend frontend1 = new Frontend(nodeMgr.allocateNextFrontendId(),
46+
FrontendNodeType.FOLLOWER, "host1", "192.168.2.3", 9010);
47+
Frontend frontend2 = null;
48+
boolean addedFrontend1 = false;
49+
boolean addedFrontend2 = false;
7450

75-
Frontend frontend = nodeMgr.getFeByHost("192.168.2.4");
76-
FrontendHbResponse hb = new FrontendHbResponse(frontend.getNodeName(), frontend.getQueryPort(),
77-
frontend.getRpcPort(), 1000, System.currentTimeMillis(), System.currentTimeMillis(),
78-
"v1", 0.5f, 1, null);
79-
// one joined successfully
80-
frontend.handleHbResponse(hb, false);
81-
Assertions.assertEquals(2,
82-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
51+
try {
52+
nodeMgr.replayAddFrontend(frontend1);
53+
addedFrontend1 = true;
54+
ha.addUnstableNode(frontend1.getNodeName(), nodeMgr.getFollowerCnt());
55+
Assertions.assertEquals(baselineFollowerCnt,
56+
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
8357

84-
// the other one is dropped
85-
nodeMgr.dropFrontend(FrontendNodeType.FOLLOWER, "192.168.2.3", 9010);
58+
frontend2 = new Frontend(nodeMgr.allocateNextFrontendId(),
59+
FrontendNodeType.FOLLOWER, "host2", "192.168.2.4", 9010);
60+
nodeMgr.replayAddFrontend(frontend2);
61+
addedFrontend2 = true;
62+
ha.addUnstableNode(frontend2.getNodeName(), nodeMgr.getFollowerCnt());
63+
Assertions.assertEquals(baselineFollowerCnt,
64+
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
8665

87-
Assertions.assertEquals(0,
88-
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
66+
Assertions.assertFalse(frontend1.isAlive());
67+
frontend1.handleHbResponse(new FrontendHbResponse(frontend1.getNodeName(), 9030,
68+
9020, 1000, System.currentTimeMillis(), System.currentTimeMillis(),
69+
"v1", 0.5f, 1, null), false);
70+
Assertions.assertTrue(frontend1.isAlive());
71+
Assertions.assertEquals(baselineFollowerCnt + 1,
72+
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
8973

90-
UtFrameUtils.PseudoImage image1 = new UtFrameUtils.PseudoImage();
91-
nodeMgr.save(image1.getImageWriter());
92-
SRMetaBlockReader reader = new SRMetaBlockReaderV2(image1.getJsonReader());
93-
NodeMgr nodeMgr2 = new NodeMgr();
94-
nodeMgr2.load(reader);
95-
reader.close();
96-
Assertions.assertEquals(1, nodeMgr2.getRemovedFrontendNames().size());
97-
Assertions.assertEquals(2, nodeMgr2.getHelperNodes().size());
74+
Assertions.assertFalse(frontend2.isAlive());
75+
frontend2.handleHbResponse(new FrontendHbResponse(frontend2.getNodeName(), 9030,
76+
9020, 1000, System.currentTimeMillis(), System.currentTimeMillis(),
77+
"v1", 0.5f, 1, null), false);
78+
Assertions.assertTrue(frontend2.isAlive());
79+
Assertions.assertEquals(0,
80+
environment.getReplicatedEnvironment().getRepMutableConfig().getElectableGroupSizeOverride());
81+
} finally {
82+
if (addedFrontend2) {
83+
nodeMgr.replayDropFrontend(new DropFrontendInfo(frontend2.getNodeName()));
84+
}
85+
if (addedFrontend1) {
86+
nodeMgr.replayDropFrontend(new DropFrontendInfo(frontend1.getNodeName()));
87+
}
88+
}
9889
}
9990
}

0 commit comments

Comments
 (0)