您好,登錄后才能下訂單哦!
這篇文章主要介紹MDCache中resolve有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
MDCache中handle_resolve()函數處理MMDSResolve類消息。對于MMDSResolve類消息中slave_requests數組不為空則優先處理該數組,將該數組中的保存的數據寫入到uncommitted_masters數組、rejoin_slave_exports數組以及rejoin_imported_caps數組。最后創建MMDSResolveAck類消息且設置對應slave request的commit,最后將MMDSResolveAck類消息發送回給對應的MDS進程。對于MDS處于clientreplay/active/stopping狀態則通過遍歷my_ambiguous_imports數組得到當前處于ambiguous狀態的import的目錄,之后在MMDSResolve類消息中的subtrees目錄下尋找處于ambiguous狀態的import的目錄,若找到了則執行migrator->import_finish()函數表示import目錄完畢。遍歷MMDSResolve類消息中的subtrees數組且調用try_subtree_merge()函數來嘗試merge該subtree到MDS。最后遍歷MMDSResolve類消息的ambiguous_imports數組來更新other_ambiguous_imports數組,之后調用mybe_resolve_finish()函數來確認resolve是否完畢。
MDCache中handle_resolve_ack()函數處理MMDSResolveAck類消息。首先遍歷MMDSResolveAck類消息中的commit數組,對于數組中的元素位于ambiguous_slave_updates數組中則從ambiguous_slave_updates數組中刪除對應的項。若MDS處于Resolve狀態則得到MDSlaveUpdate類對象,之后將MDSlaveUpdate類對象寫入到mdlog中,最后刪除uncommitted_slave_update數組中對應的項。若MDS未處于Resolve狀態則得到MDRequest類對象,最后調用request_finish()函數完成request請求。之后遍歷MMDSResolveAck類消息中的abort數組,若MDS處于Resolve狀態則執行適當的rollback操作,否則調用request_finish()函數完成request請求。
以上是“MDCache中resolve有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。