校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 开源框架 > paxos
题目

当一个 Acceptor 使用 Proposer 提供的 firstUnchosenIndex 来标记被 chosen 的日志记录时,它必须先检查日志记录中的提案编号(acceptedProposal[i] == request.proposal)。假设它跳过了这一检查:请描述一个系统异常的情况。

解答

可能出现的异常行为是:服务器会标记两个不同的 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 标记 index 1 的日志为 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。

C 1条回复 评论
我吃小朋友

我是大学学的Java开发、现在转行做了测试刚做两个多月

发表于 2023-09-18 22:00:00
0 0