這個問題出現了好幾天。日志里面一天出現幾十次no write has been done on this connection, 所以研究好幾天。 程序那邊所做的操作就是在發生問題時,拋出getLastError 然后去查了一下getLastError的方法,W有幾個值, 1:任何一臺服務器寫完即可進行下一步
這個問題出現了好幾天。日志里面一天出現幾十次no write has been done on this connection,
所以研究好幾天。
程序那邊所做的操作就是在發生問題時,拋出getLastError
然后去查了一下getLastError的方法,W有幾個值,
1:任何一臺服務器寫完即可進行下一步操作。
2:必須要有2臺完成。
0:則是不考慮寫完成與否,繼續寫操作。
還有一個數值就是majority。查看官方文檔后,我的理解是,大于2的值都用majority。下面是官方的解釋
以上是官方對幾個參數的全部解釋。
還有一個值是j,true,false,true就打開日志記錄。
舉個例子,w:1,j:true,那么,就必須要一臺服務器寫操作完成后,并且將操作寫進journal,然后才可以進行下一步操作。
圖中可以看到,必須寫完journal才能返回有效值。
從紅線部分,可以看出,majority會替代大于2的數字,
回到題目,報那個錯,最后發現是版本問題。我們可以通過以下方法驗證,在2.2上,對一個空集合進行remove操作,然后馬上輸入getLastError(w:1),就會返回題目的錯誤,但是在2.6上,就不會。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com