1. 程式人生 > 其它 >MIT6.824 Lab2除錯過程

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、注意力要很集中,否則不會產生心流。避免頻繁中斷,看手機。