Don't know the reason

async fn process_event(&mut self, peer_id: AccountAddress, event: VerifiedEvent<T>) {
    match self.processor_mut() {
        Processor::StartupSyncProcessor(p) => {
            if let Ok(data) = match event {
                VerifiedEvent::ProposalMsg(proposal) => p.process_proposal_msg(*proposal).await,
                VerifiedEvent::VoteMsg(vote) => p.process_vote(*vote).await,
                _ => Err(anyhow!("Unexpected VerifiedEvent during startup")),
            } {
                info!("Recovered from StartupSyncProcessor");
                self.start_epoch_with_recovery_data(data).await
            }
        }
        Processor::EventProcessor(p) => match event {
            VerifiedEvent::ProposalMsg(proposal) => p.process_proposal_msg(*proposal).await,
            VerifiedEvent::VoteMsg(vote) => p.process_vote(*vote).await,
            VerifiedEvent::SyncInfo(sync_info) => {
                p.process_sync_info_msg(*sync_info, peer_id).await
            }
        },
    }
}

call the function(p.process_sync_info_msg) , why not in the condition: Processor::StartupSyncProcessor§ => {

???

1 Like

Hi that’s a good question, the standalone SyncInfo is only expected when the node itself sends a Proposal/Vote that carries a stale SyncInfo(see EventProcessor.help_remote_if_stale). In this case StartupSyncProcessor never sends Proposal/Vote so it doesn’t expect a standalone SyncInfo but just the SyncInfo embedded in Proposal/Vote.

got it.

thank you so much.