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/
转载文章受原作者版权保护。转载请注明原作者出处!