@@ -42,9 +42,9 @@ use crate::{
4242 helpers:: proposal_commitment,
4343 logging:: KeyPrefix ,
4444 message:: {
45- self , BlockMessage , Certificate2 , CheckpointCertificate , CheckpointVote , ConsensusMessage ,
46- Message , MessageType , Proposal , ProposalFetchMessage , ProposalMessage , TimeoutOneHonest ,
47- TransactionMessage , Unchecked , Vote2 ,
45+ self , BlockMessage , Certificate2 , ConsensusMessage , Message , MessageType , Proposal ,
46+ ProposalFetchMessage , ProposalMessage , TimeoutOneHonest , TransactionMessage , Unchecked ,
47+ Vote2 ,
4848 } ,
4949 network:: Network ,
5050 outbox:: Outbox ,
@@ -78,7 +78,6 @@ pub struct Coordinator<T: NodeType, N, S> {
7878 vote2_collector : VoteCollector < T , Vote2 < T > , Certificate2 < T > > ,
7979 timeout_collector : VoteCollector < T , TimeoutVote2 < T > , TimeoutCertificate2 < T > > ,
8080 timeout_one_honest_collector : VoteCollector < T , TimeoutVote2 < T > , TimeoutOneHonest < T > > ,
81- checkpoint_collector : VoteCollector < T , CheckpointVote < T > , CheckpointCertificate < T > > ,
8281 epoch_root_collector : EpochRootVoteCollector < T > ,
8382 epoch_manager : EpochManager < T > ,
8483 block_builder : BlockBuilder < T > ,
@@ -122,7 +121,6 @@ where
122121 stake_table_capacity : usize ,
123122 timeout_duration : Duration ,
124123 storage : S ,
125- garbage_collection_interval : u64 ,
126124 metrics : & dyn Metrics ,
127125 ) -> Self {
128126 let mut consensus = Consensus :: new (
@@ -134,7 +132,6 @@ where
134132 upgrade_lock. clone ( ) ,
135133 initializer. anchor_leaf . clone ( ) ,
136134 initializer. epoch_height ,
137- garbage_collection_interval,
138135 ) ;
139136
140137 let genesis_cert1 = initializer. high_qc . clone ( ) ;
@@ -193,10 +190,6 @@ where
193190 membership_coordinator. clone ( ) ,
194191 lock. clone ( ) ,
195192 ) )
196- . checkpoint_collector ( VoteCollector :: new (
197- membership_coordinator. clone ( ) ,
198- lock. clone ( ) ,
199- ) )
200193 . epoch_root_collector ( EpochRootVoteCollector :: new (
201194 membership_coordinator. clone ( ) ,
202195 lock,
@@ -425,14 +418,6 @@ where
425418 return Err ( CoordinatorError :: regular( e) . context( "proposal validation" ) )
426419 }
427420 } ,
428- Some ( cert) = self . checkpoint_collector. next( ) => {
429- finish_measurement( next_input) ;
430- let Some ( epoch) = cert. epoch( ) else {
431- let msg = format!( "missing epoch in view {}" , cert. view_number( ) ) ;
432- return Err ( CoordinatorError :: critical( msg) . context( "gc certificate" ) )
433- } ;
434- self . gc( cert. view_number( ) , epoch) ;
435- }
436421 Some ( item) = self . block_builder. next( ) => match item {
437422 Ok ( block) => {
438423 finish_measurement( next_input) ;
@@ -571,20 +556,6 @@ where
571556 debug ! ( %node, %epoch, "request drb result" ) ;
572557 self . epoch_manager . request_drb_result ( epoch) ;
573558 } ,
574- ConsensusOutput :: SendCheckpointVote ( checkpoint_vote) => {
575- let view = checkpoint_vote. view_number ( ) ;
576- let epoch = checkpoint_vote. data . epoch ;
577- debug ! ( %node, %view, %epoch, "send checkpoint vote" ) ;
578- let message = Message {
579- sender : self . public_key . clone ( ) ,
580- message_type : MessageType :: Consensus ( ConsensusMessage :: Checkpoint (
581- checkpoint_vote,
582- ) ) ,
583- } ;
584- self . network
585- . broadcast ( message. view_number ( ) , & message)
586- . map_err ( |e| CoordinatorError :: from ( e) . context ( "broadcast checkpoint vote" ) ) ?
587- } ,
588559 ConsensusOutput :: LeafDecided {
589560 leaves,
590561 cert1,
@@ -601,6 +572,13 @@ where
601572 if let Some ( cert2) = cert2 {
602573 self . storage . append_cert2 ( cert2. view_number , cert2. clone ( ) ) ;
603574 }
575+ // `leaves` is ordered newest first
576+ // garbage collect the data for views < decided view
577+ if let Some ( newest) = leaves. first ( ) {
578+ let gc_view = newest. view_number ( ) ;
579+ let gc_epoch = newest. justify_qc ( ) . epoch ( ) . unwrap_or_default ( ) ;
580+ self . gc ( gc_view, gc_epoch) ;
581+ }
604582 for leaf in leaves {
605583 self . epoch_manager . handle_leaf_decided ( leaf) ;
606584 }
@@ -940,16 +918,6 @@ where
940918 ) ;
941919 Some ( ConsensusInput :: EpochChange ( epoch_change) )
942920 } ,
943- ConsensusMessage :: Checkpoint ( checkpoint) => {
944- debug ! (
945- %node, %sender,
946- view = %checkpoint. view_number( ) ,
947- epoch = %checkpoint. data. epoch,
948- "recv checkpoint vote"
949- ) ;
950- self . checkpoint_collector . accumulate_vote ( checkpoint) . await ;
951- None
952- } ,
953921 } ,
954922 MessageType :: Block ( msg) => {
955923 match msg {
@@ -1401,7 +1369,6 @@ where
14011369 fn gc ( & mut self , view : ViewNumber , epoch : EpochNumber ) {
14021370 info ! ( node = %self . node_id, %view, "garbage collecting" ) ;
14031371 self . consensus . gc ( view, epoch) ;
1404- self . checkpoint_collector . gc ( view, epoch) ;
14051372 let _ = self . network . gc ( view) ; // TODO
14061373 self . state_manager . gc ( view) ;
14071374 self . vid_disperser . gc ( view) ;
0 commit comments