| 582 | } |
| 583 | |
| 584 | void 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 |
nothing calls this directly
no test coverage detected