1616
1717import com .starrocks .journal .bdbje .BDBEnvironment ;
1818import 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 ;
2120import com .starrocks .server .GlobalStateMgr ;
2221import com .starrocks .server .NodeMgr ;
2322import 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