ziyinweixiao
ziyinweixiao
为什么提案通过后,leader 先执行状态机,这个优化点算是优化在哪里 void Learner :: ProposerSendSuccess( const uint64_t llLearnInstanceID, const uint64_t llProposalID) { BP->GetLearnerBP()->ProposerSendSuccess(); PaxosMsg oPaxosMsg; oPaxosMsg.set_msgtype(MsgType_PaxosLearner_ProposerSendSuccess); oPaxosMsg.set_instanceid(llLearnInstanceID); NodeIDMsg * oNodeIDMsg = oPaxosMsg.mutable_nodeid(); NodeID2NodeIDMsg(m_poConfig->GetMyNodeID(), oNodeIDMsg); oPaxosMsg.set_proposalid(llProposalID); oPaxosMsg.set_lastchecksum(GetLastChecksum()); //run self first...
现在有A, B, C三个节点, A节点是Master, 读写操作从A进行,如果A节点同一时间进来两个 propose 操作pro1 和pro2 , pro1先 进行提案, 在提案成功后, A节点状态机执行时间比较长,超过了Master续约时间, 此时B节点进行trybemaster 并成为Master, 然后A节点的pro2号请求继续执行, 在2号提案通过并且状态机执行完成之后,会不会导致, 从B节点进行的读操作 没有做到latest read