From: Casey Bodley Date: Mon, 23 Jan 2017 21:26:36 +0000 (-0500) Subject: rgw: add MetaPeerTrimCR to query master mdlog info X-Git-Tag: v12.0.3~20^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6e9296d49f4ce322a98651119f5dc66df7f5224c;p=ceph.git rgw: add MetaPeerTrimCR to query master mdlog info Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_sync.cc b/src/rgw/rgw_sync.cc index 703323e233a8..74097e7f0602 100644 --- a/src/rgw/rgw_sync.cc +++ b/src/rgw/rgw_sync.cc @@ -2522,6 +2522,8 @@ struct MasterTrimEnv : public TrimEnv { } }; +using PeerTrimEnv = TrimEnv; + } // anonymous namespace @@ -2666,3 +2668,38 @@ int MetaMasterTrimCR::operate() } return 0; } + + +class MetaPeerTrimCR : public RGWCoroutine { + PeerTrimEnv& env; + rgw_mdlog_info mdlog_info; //< master's mdlog info + + public: + MetaPeerTrimCR(PeerTrimEnv& env) : RGWCoroutine(env.store->ctx()), env(env) {} + + int operate(); +}; + +int MetaPeerTrimCR::operate() +{ + reenter(this) { + ldout(cct, 10) << "fetching master mdlog info" << dendl; + yield { + // query mdlog_info from master for oldest_log_period + rgw_http_param_pair params[] = { + { "type", "metadata" }, + { nullptr, nullptr } + }; + + using LogInfoCR = RGWReadRESTResourceCR; + call(new LogInfoCR(cct, env.store->rest_master_conn, env.http, + "/admin/log/", params, &mdlog_info)); + } + if (retcode < 0) { + ldout(cct, 4) << "failed to read mdlog info from master" << dendl; + return set_cr_error(retcode); + } + return set_cr_done(); + } + return 0; +}