您好,登錄后才能下訂單哦!
小編給大家分享一下MDSTableClient類有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
MDSTableClient類用于和MDSTableServer通信,向MDSTableServer類發送消息以及從MDSTableServer類接收消息回復
MDSTableClient::handle_request() client端總路由調度函數,根據消息的操作類型不同,調用不同的handle_*()函數進行處理
|__TABLESERVER_OP_QUERY_REPLY
|__handle_query_result()
|__TABLESERVER_OP_AGREE
|__對于回復在pending_prepare數組中
|__設置pending_prepare[reqid].ptid = tid
|__設置pending_prepare[reqid].pbl = m->bl
|__刪除pending_prepare[reqid]
|__設置prepared_update[tid] = reqid
|__對于回復在prepared_update數組中
|__重復回復
|__對于回復在pending_commit數組中
|__對于回復不再上述數組中
|__創建MMDSTableRequest類消息(TABLESERVER_OP_ROLLBACK)
|__mds->send_message_mds() 將消息發送給Server
|__TABLESERVER_OP_ACK
|__對于回復在pending_commit數組中
|__刪除pending_commit[tid]->pending_commit_tids[table]
|__刪除pending_commit[tid]
|__mds->mdlog->start_submit_entry()
|__TABLESERVER_OP_SERVER_READY
|__設置server_ready = true
|__resend_queries()
|__resend_prepares()
|__resend_commits()
MDSTableClient::_logged_ack() 對于TABLESERVER_OP_ACK操作寫log的回調函數
|__對于ack_waiters[tid]
|__mds->queue_waiters(ack_waiters[tid])
|__清除ack_waiters[tid]
MDSTableClient::_prepare()
|__對于tableserver未準備好,則將prepare消息插入到waiting_for_reqid數組中
|__獲取reqid = ++last_reqid
|__填充pending_prepare[reqid]數組
|__若tableserver準備好
|__創建MMDSTableRequest類消息(TABLESERVER_OP_PREPARE)
|__mds->send_message_mds() 發送消息到tableserver
MDSTableClient::commit()
|__刪除prepared_update[tid]
|__設置pending_commit[tid] = ls
|__若tableserver準備好
|__創建MMDSTableRequest類消息(TABLESERVER_OP_COMMIT)
|__mds->send_message_mds() 發送消息到tableserver
MDSTableClient::got_journaled_agree()
|__pending_commit[tid] = ls
MDSTableClient::got_journaled_ack()
|__刪除pending_commit[tid]
MDSTableClient::resend_prepares()
|__遍歷waiting_for_reqid數組
|__將該數組中的內容復制到pending_prepare[++last_reqid]
|__刪除waiting_for_reqid數組對應的項
|__遍歷pending_prepare數組
|__創建MMDSTableRequest類消息(TABLESERVER_OP_PREPARE)
|__mds->send_message_mds() 將類消息發送給tableserver
MDSTableClient::resend_commits()
|__遍歷pending_commit數組
|__創建MMDSTableRequest類消息(TABLESERVER_OP_COMMIT)
|__mds->send_message_mds() 將類消息發送給tableserver
MDSTableClient::handle_mds_failure()
|__設置server_ready = false
SnapClient類繼承于MDSTableClient類,實際上SnapClient就是封裝了一些處理函數,SnapClient具體操作函數說明如下:
SnapClient::prepare_create()
|__設置op = TABLE_OP_CREATE
|__將op/dirino/name/stamp序列化到bufferlist中
|__MDSTableClient::_prepare()
SnapClient::prepare_create_realm()
|__設置op = TABLE_OP_CREATE
|__將op/ino序列化到bufferlist中
|__MDSTableClient::_prepare()
SnapClient::prepare_destroy()
|__設置op = TABLE_OP_DESTROY
|__將op/ino/snapid序列化到bufferlist中
|__MDSTableClient::_prepare()
SnapClient::prepare_update()
|__設置op = TABLE_OP_UPDATE
|__將op/ino/snapid/name/stamp序列化到bufferlist中
|__MDSTableClient::_prepare()
SnapClient和MDSTableClient的對應關系如下圖所示:
以上是“MDSTableClient類有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。