02当一个 Acceptor 使用 Proposer 提供的 firstUnchosenIndex
来标记被 chos
可能出现的异常行为是:服务器会标记两个不同的chosen值。用2个竞争的提案,3节点集群和2个日志来举例:•S1完成一轮Prepare发送提案编号n=1.1,index=1给S1,S2•S1只完成S1(它自己)的Accept提案n=1.1,value=X,index=1•S2完成一轮Prepare发送提案编号n=2.2,index=1给S2,S3,收到二者包含noMoreAccepted=true的响应•S2完成一轮Accept,S2、S3收到n=2.2,value=Y,index=1•S2标记index1的日志为chosen•S2完成一轮Accept,S1,S2,和S3收到n=2.2,value=Z,index=2,firstUnchosenIndex=2,此时,S1将会发生异常:将n=1.1,value=X的日志设为chosen,然后将X应用到状态机。这是不正确的,因为实际上是Y被chosen。
来自:分布式理论-paxos