MIT6.824 Lab2调试过程

2021-12-12 21:50

测试了5次,通过了并发用例。运行并发的用例的时候,会报第6个entry没有被三个节点中的任意一个apply。

看了看日志,发现第6个entry一直没有被apply,没有被apply的原因是leader的commitIndex一直很小,导致

follower的commitIndex也很小。开始以为是发送处理AE RPC的过程有死锁导致程序卡住,但是后来在仔细

看日志,才发现是leader的entry都已经commit到两三个了,才更新自己的commitIndex到1,因为我的实现里

leader在根据figure2的规则更新了commitIndex之后就结束了, 并没有再次增加N,直到不满足figure2的条件。

修改之后,leader的commitIndex更新了,并且每一个entry也都能及时apply。

今天的调试过程总耗时8小时(粗略估计),实际产出一行注释,很痛心。实际上好好搞,根本用不了这么长时间。过程中值得反思的地方有:

1、分析问题要细致,看日志的时候不要盲目,要根据日志去看代码的逻辑。盯着屏幕发呆是不行的。

2、注意力要很集中,否则不会产生心流。避免频繁中断,看手机。

Original: https://www.cnblogs.com/dennis-wong/p/15680897.html
Author: 成蹊0xc000
Title: MIT6.824 Lab2调试过程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582780/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球