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: v10.2.11~111^2~8 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=5caf51ef0935f14baeb4737a187dc8e784544ae8;p=ceph.git rgw: add MetaPeerTrimCR to query master mdlog info Signed-off-by: Casey Bodley (cherry picked from commit 6e9296d49f4ce322a98651119f5dc66df7f5224c) --- diff --git a/src/rgw/rgw_sync.cc b/src/rgw/rgw_sync.cc index 5ca023dfd4fa3..84de084565bc8 100644 --- a/src/rgw/rgw_sync.cc +++ b/src/rgw/rgw_sync.cc @@ -2497,6 +2497,8 @@ struct MasterTrimEnv : public TrimEnv { } }; +using PeerTrimEnv = TrimEnv; + } // anonymous namespace @@ -2641,3 +2643,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; +}