@@ -33,7 +33,6 @@ use parking_lot::Mutex;
33
33
use parking_lot:: RwLock ;
34
34
use parking_lot:: RwLockUpgradableReadGuard ;
35
35
use parking_lot:: RwLockWriteGuard ;
36
- use tokio:: sync:: broadcast;
37
36
use tokio:: sync:: oneshot;
38
37
#[ cfg( not( madsim) ) ]
39
38
use tonic:: transport:: ClientTlsConfig ;
@@ -334,9 +333,6 @@ struct Context<C: Command, RC: RoleChange> {
334
333
cb : CmdBoardRef < C > ,
335
334
/// The lease manager
336
335
lm : LeaseManagerRef ,
337
- /// Tx to send leader changes
338
- #[ builder( setter( skip) ) ]
339
- leader_tx : broadcast:: Sender < Option < ServerId > > ,
340
336
/// Election tick
341
337
#[ builder( setter( skip) ) ]
342
338
election_tick : AtomicU8 ,
@@ -389,7 +385,6 @@ impl<C: Command, RC: RoleChange> ContextBuilder<C, RC> {
389
385
Some ( value) => value,
390
386
None => return Err ( ContextBuilderError :: UninitializedField ( "lm" ) ) ,
391
387
} ,
392
- leader_tx : broadcast:: channel ( 1 ) . 0 ,
393
388
election_tick : AtomicU8 :: new ( 0 ) ,
394
389
sync_events : match self . sync_events . take ( ) {
395
390
Some ( value) => value,
@@ -445,7 +440,6 @@ impl<C: Command, RC: RoleChange> Debug for Context<C, RC> {
445
440
f. debug_struct ( "Context" )
446
441
. field ( "cfg" , & self . cfg )
447
442
. field ( "cb" , & self . cb )
448
- . field ( "leader_tx" , & self . leader_tx )
449
443
. field ( "election_tick" , & self . election_tick )
450
444
. field ( "cmd_tx" , & "CEEventTxApi" )
451
445
. field ( "sync_events" , & self . sync_events )
@@ -722,13 +716,11 @@ impl<C: Command, RC: RoleChange> RawCurp<C, RC> {
722
716
let mut st_w = RwLockUpgradableReadGuard :: upgrade ( st_r) ;
723
717
self . update_to_term_and_become_follower ( & mut st_w, term) ;
724
718
st_w. leader_id = Some ( leader_id) ;
725
- let _ig = self . ctx . leader_tx . send ( Some ( leader_id) ) . ok ( ) ;
726
719
}
727
720
std:: cmp:: Ordering :: Equal => {
728
721
if st_r. leader_id . is_none ( ) {
729
722
let mut st_w = RwLockUpgradableReadGuard :: upgrade ( st_r) ;
730
723
st_w. leader_id = Some ( leader_id) ;
731
- let _ig = self . ctx . leader_tx . send ( Some ( leader_id) ) . ok ( ) ;
732
724
}
733
725
}
734
726
std:: cmp:: Ordering :: Greater => {
@@ -1204,11 +1196,6 @@ impl<C: Command, RC: RoleChange> RawCurp<C, RC> {
1204
1196
self . ms . read ( ) . node_id ( )
1205
1197
}
1206
1198
1207
- /// Get a rx for leader changes
1208
- pub ( super ) fn leader_rx ( & self ) -> broadcast:: Receiver < Option < ServerId > > {
1209
- self . ctx . leader_tx . subscribe ( )
1210
- }
1211
-
1212
1199
/// Get the effective membership
1213
1200
pub ( super ) fn effective_membership ( & self ) -> Membership {
1214
1201
self . ms . read ( ) . cluster ( ) . effective ( ) . clone ( )
@@ -1436,7 +1423,6 @@ impl<C: Command, RC: RoleChange> RawCurp<C, RC> {
1436
1423
st. role = Role :: PreCandidate ;
1437
1424
cst. votes_received = HashMap :: from ( [ ( self . id ( ) , true ) ] ) ;
1438
1425
st. leader_id = None ;
1439
- let _ig = self . ctx . leader_tx . send ( None ) . ok ( ) ;
1440
1426
self . reset_election_tick ( ) ;
1441
1427
1442
1428
if prev_role == Role :: Follower {
@@ -1479,7 +1465,6 @@ impl<C: Command, RC: RoleChange> RawCurp<C, RC> {
1479
1465
st. role = Role :: Candidate ;
1480
1466
st. voted_for = Some ( self . id ( ) ) ;
1481
1467
st. leader_id = None ;
1482
- let _ig = self . ctx . leader_tx . send ( None ) . ok ( ) ;
1483
1468
self . reset_election_tick ( ) ;
1484
1469
1485
1470
let self_sp = self . ctx . spec_pool . map_lock ( |sp| sp. all ( ) ) ;
@@ -1522,7 +1507,6 @@ impl<C: Command, RC: RoleChange> RawCurp<C, RC> {
1522
1507
metrics:: get ( ) . leader_changes . add ( 1 , & [ ] ) ;
1523
1508
st. role = Role :: Leader ;
1524
1509
st. leader_id = Some ( self . id ( ) ) ;
1525
- let _ig = self . ctx . leader_tx . send ( Some ( self . id ( ) ) ) . ok ( ) ;
1526
1510
let _ignore = self . ctx . leader_event . notify ( usize:: MAX ) ;
1527
1511
self . ctx . role_change . on_election_win ( ) ;
1528
1512
debug ! ( "{} becomes the leader" , self . id( ) ) ;
@@ -1548,7 +1532,6 @@ impl<C: Command, RC: RoleChange> RawCurp<C, RC> {
1548
1532
st. role = Role :: Follower ;
1549
1533
st. voted_for = None ;
1550
1534
st. leader_id = None ;
1551
- let _ig = self . ctx . leader_tx . send ( None ) . ok ( ) ;
1552
1535
st. randomize_timeout_ticks ( ) ; // regenerate timeout ticks
1553
1536
debug ! (
1554
1537
"{} updates to term {term} and becomes a follower" ,
0 commit comments