MCPcopy Create free account
hub / github.com/Tencent/phxpaxos / OnProposerSendSuccess

Method OnProposerSendSuccess

src/algorithm/learner.cpp:584–632  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

582}
583
584void Learner :: OnProposerSendSuccess(const PaxosMsg & oPaxosMsg)
585{
586 BP->GetLearnerBP()->OnProposerSendSuccess();
587
588 PLGHead("START Msg.InstanceID %lu Now.InstanceID %lu Msg.ProposalID %lu State.AcceptedID %lu "
589 "State.AcceptedNodeID %lu, Msg.from_nodeid %lu",
590 oPaxosMsg.instanceid(), GetInstanceID(), oPaxosMsg.proposalid(),
591 m_poAcceptor->GetAcceptorState()->GetAcceptedBallot().m_llProposalID,
592 m_poAcceptor->GetAcceptorState()->GetAcceptedBallot().m_llNodeID,
593 oPaxosMsg.nodeid());
594
595 if (oPaxosMsg.instanceid() != GetInstanceID())
596 {
597 //Instance id not same, that means not in the same instance, ignord.
598 PLGDebug("InstanceID not same, skip msg");
599 return;
600 }
601
602 if (m_poAcceptor->GetAcceptorState()->GetAcceptedBallot().isnull())
603 {
604 //Not accept any yet.
605 BP->GetLearnerBP()->OnProposerSendSuccessNotAcceptYet();
606 PLGDebug("I haven't accpeted any proposal");
607 return;
608 }
609
610 BallotNumber oBallot(oPaxosMsg.proposalid(), oPaxosMsg.nodeid());
611
612 if (m_poAcceptor->GetAcceptorState()->GetAcceptedBallot()
613 != oBallot)
614 {
615 //Proposalid not same, this accept value maybe not chosen value.
616 PLGDebug("ProposalBallot not same to AcceptedBallot");
617 BP->GetLearnerBP()->OnProposerSendSuccessBallotNotSame();
618 return;
619 }
620
621 //learn value.
622 m_oLearnerState.LearnValueWithoutWrite(
623 oPaxosMsg.instanceid(),
624 m_poAcceptor->GetAcceptorState()->GetAcceptedValue(),
625 m_poAcceptor->GetAcceptorState()->GetChecksum());
626
627 BP->GetLearnerBP()->OnProposerSendSuccessSuccessLearn();
628
629 PLGHead("END Learn value OK, value %zu", m_poAcceptor->GetAcceptorState()->GetAcceptedValue().size());
630
631 TransmitToFollower();
632}
633
634////////////////////////////////////////////////////////////////////////
635

Callers

nothing calls this directly

Calls 6

OnProposerSendSuccessMethod · 0.80
isnullMethod · 0.80
sizeMethod · 0.80

Tested by

no test coverage detected