MIT6.824 Lab2除錯過程
阿新 • • 發佈:2021-12-13
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、注意力要很集中,否則不會產生心流。避免頻繁中斷,看手機。