中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MDSTableClient類有什么用

發布時間:2021-12-18 16:57:26 來源:億速云 閱讀:139 作者:小新 欄目:云計算

小編給大家分享一下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類有什么用

以上是“MDSTableClient類有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵东县| 修水县| 田东县| 扎囊县| 武宣县| 杭州市| 个旧市| 嫩江县| 沿河| 鹤壁市| 陇西县| 惠东县| 陵水| 凤台县| 枣强县| 建宁县| 郎溪县| 乐业县| 公安县| 黔江区| 衡东县| 大丰市| 会理县| 安宁市| 仙桃市| 五台县| 威宁| 昭平县| 侯马市| 达尔| 甘泉县| 阳江市| 壤塘县| 沁阳市| 囊谦县| 绥阳县| 贡山| 永安市| 天全县| 育儿| 平定县|