From 67f81c4b32d56535e81705c80258b7962da48b94 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Sat, 30 Jul 2016 13:36:36 -0400 Subject: [PATCH] rgw: use factory function to hide RGWDataLogTrimCR Signed-off-by: Casey Bodley (cherry picked from commit 5ded7ee28baa478f94e6bfb84d0c0fc4e4af7ff8) Conflicts: src/rgw/rgw_data_sync.h (sync modules not backported) --- src/rgw/rgw_data_sync.cc | 45 +++++++++++++++++++++++++++++----------- src/rgw/rgw_data_sync.h | 20 ++++-------------- src/rgw/rgw_rados.cc | 6 +++--- 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/src/rgw/rgw_data_sync.cc b/src/rgw/rgw_data_sync.cc index 33a2119cf2af7..a3e39f078cbe3 100644 --- a/src/rgw/rgw_data_sync.cc +++ b/src/rgw/rgw_data_sync.cc @@ -2946,20 +2946,32 @@ class LastTimelogTrimCR : public RGWRadosTimelogTrimCR { } }; -} // anonymous namespace +class DataLogTrimCR : public RGWCoroutine { + RGWRados *store; + RGWHTTPManager *http; + const int num_shards; + const utime_t interval; //< polling interval + const std::string& zone; //< my zone id + std::vector peer_status; //< sync status for each peer + std::vector min_shard_markers; //< min marker per shard + std::vector last_trim; //< last trimmed marker per shard + int ret{0}; -RGWDataLogTrimCR::RGWDataLogTrimCR(RGWRados *store, RGWHTTPManager *http, - int num_shards, utime_t interval) - : RGWCoroutine(store->ctx()), store(store), http(http), - num_shards(num_shards), interval(interval), - zone(store->get_zone().id), - peer_status(store->zone_conn_map.size()), - min_shard_markers(num_shards), - last_trim(num_shards) -{ -} + public: + DataLogTrimCR(RGWRados *store, RGWHTTPManager *http, + int num_shards, utime_t interval) + : RGWCoroutine(store->ctx()), store(store), http(http), + num_shards(num_shards), interval(interval), + zone(store->get_zone().id), + peer_status(store->zone_conn_map.size()), + min_shard_markers(num_shards), + last_trim(num_shards) + {} -int RGWDataLogTrimCR::operate() + int operate() override; +}; + +int DataLogTrimCR::operate() { reenter(this) { for (;;) { @@ -3022,3 +3034,12 @@ int RGWDataLogTrimCR::operate() } return 0; } + +} // anonymous namespace + +RGWCoroutine* create_data_log_trim_cr(RGWRados *store, + RGWHTTPManager *http, + int num_shards, utime_t interval) +{ + return new DataLogTrimCR(store, http, num_shards, interval); +} diff --git a/src/rgw/rgw_data_sync.h b/src/rgw/rgw_data_sync.h index 9956f4d235fde..202bb27b40e06 100644 --- a/src/rgw/rgw_data_sync.h +++ b/src/rgw/rgw_data_sync.h @@ -500,21 +500,9 @@ public: }; -class RGWDataLogTrimCR : public RGWCoroutine { - RGWRados *store; - RGWHTTPManager *http; - const int num_shards; - const utime_t interval; //< polling interval - const std::string& zone; //< my zone id - std::vector peer_status; //< sync status for each peer - std::vector min_shard_markers; //< min marker per shard - std::vector last_trim; //< last trimmed marker per shard - int ret{0}; - - public: - RGWDataLogTrimCR(RGWRados *store, RGWHTTPManager *http, - int num_shards, utime_t interval); - int operate() override; -}; +// DataLogTrimCR factory function +extern RGWCoroutine* create_data_log_trim_cr(RGWRados *store, + RGWHTTPManager *http, + int num_shards, utime_t interval); #endif diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index ae238daa2677b..58b9f7f9d625b 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3088,9 +3088,9 @@ public: return http.set_threaded(); } int process() override { - crs.run(new RGWDataLogTrimCR(store, &http, - cct->_conf->rgw_data_log_num_shards, - trim_interval)); + crs.run(create_data_log_trim_cr(store, &http, + cct->_conf->rgw_data_log_num_shards, + trim_interval)); return 0; } }; -- 2.39.5