From: Casey Bodley Date: Mon, 5 Dec 2022 22:40:10 +0000 (-0500) Subject: rgw/sync: add a BidManager to metadata sync X-Git-Tag: v19.0.0~1234^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=43e95e6cebd4349711904686a7792bb35ddc69b0;p=ceph.git rgw/sync: add a BidManager to metadata sync Signed-off-by: Casey Bodley --- diff --git a/src/rgw/driver/rados/rgw_sync.cc b/src/rgw/driver/rados/rgw_sync.cc index d0ec90796d91..9b1eb18a828b 100644 --- a/src/rgw/driver/rados/rgw_sync.cc +++ b/src/rgw/driver/rados/rgw_sync.cc @@ -23,6 +23,8 @@ static string mdlog_sync_status_oid = "mdlog.sync-status"; static string mdlog_sync_status_shard_prefix = "mdlog.sync-status.shard"; static string mdlog_sync_full_sync_index_prefix = "meta.full-sync.index"; +static const string meta_sync_bids_oid = "meta-sync-bids"; + RGWContinuousLeaseCR::~RGWContinuousLeaseCR() {} RGWSyncErrorLogger::RGWSyncErrorLogger(rgw::sal::RadosStore* _store, const string &oid_prefix, int _num_shards) : store(_store), num_shards(_num_shards) { @@ -2233,6 +2235,18 @@ int RGWRemoteMetaLog::run_sync(const DoutPrefixProvider *dpp, optional_yield y) return -EINVAL; } + // construct and start the bid manager for sync fairness + const auto& control_pool = store->svc()->zone->get_zone_params().control_pool; + auto control_obj = rgw_raw_obj{control_pool, meta_sync_bids_oid}; + + auto bid_manager = rgw::sync_fairness::create_rados_bid_manager( + store, control_obj, num_shards); + r = bid_manager->start(); + if (r < 0) { + return r; + } + sync_env.bid_manager = bid_manager.get(); + RGWPeriodHistory::Cursor cursor; do { r = run(dpp, new RGWReadSyncStatusCoroutine(&sync_env, &sync_status)); diff --git a/src/rgw/driver/rados/rgw_sync.h b/src/rgw/driver/rados/rgw_sync.h index e6c255cc6014..f0ee28056afa 100644 --- a/src/rgw/driver/rados/rgw_sync.h +++ b/src/rgw/driver/rados/rgw_sync.h @@ -15,6 +15,7 @@ #include "rgw_sal_rados.h" #include "rgw_sync_trace.h" #include "rgw_mdlog.h" +#include "sync_fairness.h" #define ERROR_LOGGER_SHARDS 32 #define RGW_SYNC_ERROR_LOG_SHARD_PREFIX "sync.error-log" @@ -180,6 +181,7 @@ struct RGWMetaSyncEnv { RGWHTTPManager *http_manager{nullptr}; RGWSyncErrorLogger *error_logger{nullptr}; RGWSyncTraceManager *sync_tracer{nullptr}; + rgw::sync_fairness::BidManager* bid_manager{nullptr}; RGWMetaSyncEnv() {} @@ -224,7 +226,7 @@ public: http_manager(store->ctx(), completion_mgr), status_manager(_sm) {} - virtual ~RGWRemoteMetaLog() override; + ~RGWRemoteMetaLog() override; int init(); void finish();