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、注意力要很集中,否则不会产生心流。避免频繁中断,看手机。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号