c++中将中文转为二进制码_MIT6.824_Lab2_Raft_PartB_C 通关攻略

74d8744e255cf074227af50c7ce9c89c.png

1. MIT6.824_Lab2_Raft_PartB

在这个部分我们想要实现 Raft 保持一致的、复制的操作日志。在 Leader 中对Start()的调用开启向日志中添加一个新操作的过程;同时将这个新操作使用AppendEntriesRPC发送给其他服务器。

实现 leader 和 follower 代码完成日志项的添加。这涉及到实现 start(),补充 AppendEntries RPC 结构体,发送请求,充实AppendEntry RPC处理程序以及更新leader 的commitIndex。
SmallPond/MIT6.824_2018​github.com
e52a40ae61534f801bf01c7a6c2a7a8d.png

1.1. FAILS

TestBasicAgree2B 创建了5个 server, nCommitted求得有多少服务器认为日志项已经提交。

  1. 不明白为什么一直无法通过 2B 的第一个test,而且拿其他大佬的raft.go代码直接过来跑也是无法通过。但是其跑其对应的测试代码是可以通过的。仔细对比发现可能是config.go中的start1函数不一样导致的(还有在Start中忘记使用AppendEntriesRPC将新操作发送给其他服务器)。 在调试的过程中我的代码不小心被覆盖找不回来了(大哭..Debug D到疯,实在是不想再重写一遍(~~也感觉找不出到达时哪里出现了问题~~无法通过BasicAgree其中一个原因是我在写入applyMsg时没有写入CommanValid=true,也就不能在start1中将日志写入log中,导致一直读出来nCommited为0),
// config.go 中的 start1()部分代码
if m.CommandValid == false {
                // ignore other types of ApplyMsg
            } else if v, ok := (m.Command).(int); ok {
              
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值