flush_ss(ss, status);
return;
}
- RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone);
+ RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone, nullptr);
int ret = sync.init();
if (ret < 0) {
cerr << "ERROR: source zone not specified" << std::endl;
return EINVAL;
}
- RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone);
+ RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone, nullptr);
int ret = sync.init();
if (ret < 0) {
return EINVAL;
}
- RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone);
+ RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone, nullptr);
int ret = sync.init();
if (ret < 0) {
return ret;
}
- RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone, sync_module);
+ RGWDataSyncStatusManager sync(store, store->get_async_rados(), source_zone, nullptr, sync_module);
ret = sync.init();
if (ret < 0) {
}
int RGWRemoteDataLog::init(const string& _source_zone, RGWRESTConn *_conn, RGWSyncErrorLogger *_error_logger,
- RGWSyncTraceManager *_sync_tracer, RGWSyncModuleInstanceRef& _sync_module)
+ RGWSyncTraceManager *_sync_tracer, RGWSyncModuleInstanceRef& _sync_module,
+ PerfCounters* counters)
{
sync_env.init(dpp, store->ctx(), store, _conn, async_rados, &http_manager, _error_logger,
- _sync_tracer, _source_zone, _sync_module);
+ _sync_tracer, _source_zone, _sync_module, counters);
if (initialized) {
return 0;
error_logger = new RGWSyncErrorLogger(store, RGW_SYNC_ERROR_LOG_SHARD_PREFIX, ERROR_LOGGER_SHARDS);
- int r = source_log.init(source_zone, conn, error_logger, store->get_sync_tracer(), sync_module);
+ int r = source_log.init(source_zone, conn, error_logger, store->get_sync_tracer(),
+ sync_module, counters);
if (r < 0) {
ldpp_dout(this, 0) << "ERROR: failed to init remote log, r=" << r << dendl;
finalize();
bs.shard_id = shard_id;
sync_env.init(dpp, store->ctx(), store, conn, async_rados, http_manager,
- _error_logger, _sync_tracer, source_zone, _sync_module);
+ _error_logger, _sync_tracer, source_zone, _sync_module, nullptr);
return 0;
}
RGWDataSyncEnv env;
RGWSyncModuleInstanceRef module; // null sync module
env.init(dpp, store->ctx(), store, nullptr, store->get_async_rados(),
- nullptr, nullptr, nullptr, source_zone, module);
+ nullptr, nullptr, nullptr, source_zone, module, nullptr);
RGWCoroutinesManager crs(store->ctx(), store->get_cr_registry());
return crs.run(new RGWCollectBucketSyncStatusCR(store, &env, num_shards,
RGWSyncTraceManager *sync_tracer{nullptr};
string source_zone;
RGWSyncModuleInstanceRef sync_module{nullptr};
+ PerfCounters* counters{nullptr};
RGWDataSyncEnv() {}
void init(const DoutPrefixProvider *_dpp, CephContext *_cct, RGWRados *_store, RGWRESTConn *_conn,
RGWAsyncRadosProcessor *_async_rados, RGWHTTPManager *_http_manager,
RGWSyncErrorLogger *_error_logger, RGWSyncTraceManager *_sync_tracer,
- const string& _source_zone, RGWSyncModuleInstanceRef& _sync_module) {
+ const string& _source_zone, RGWSyncModuleInstanceRef& _sync_module,
+ PerfCounters* _counters) {
dpp = _dpp;
cct = _cct;
store = _store;
sync_tracer = _sync_tracer;
source_zone = _source_zone;
sync_module = _sync_module;
+ counters = _counters;
}
string shard_obj_name(int shard_id);
lock("RGWRemoteDataLog::lock"), data_sync_cr(NULL),
initialized(false) {}
int init(const string& _source_zone, RGWRESTConn *_conn, RGWSyncErrorLogger *_error_logger,
- RGWSyncTraceManager *_sync_tracer, RGWSyncModuleInstanceRef& module);
+ RGWSyncTraceManager *_sync_tracer, RGWSyncModuleInstanceRef& module,
+ PerfCounters* _counters);
void finish();
int read_log_info(rgw_datalog_info *log_info);
RGWRESTConn *conn;
RGWSyncErrorLogger *error_logger;
RGWSyncModuleInstanceRef sync_module;
+ PerfCounters* counters;
RGWRemoteDataLog source_log;
public:
RGWDataSyncStatusManager(RGWRados *_store, RGWAsyncRadosProcessor *async_rados,
- const string& _source_zone)
+ const string& _source_zone, PerfCounters* counters)
: store(_store), source_zone(_source_zone), conn(NULL), error_logger(NULL),
- sync_module(nullptr),
+ sync_module(nullptr), counters(counters),
source_log(this, store, async_rados), num_shards(0) {}
RGWDataSyncStatusManager(RGWRados *_store, RGWAsyncRadosProcessor *async_rados,
- const string& _source_zone, const RGWSyncModuleInstanceRef& _sync_module)
+ const string& _source_zone, PerfCounters* counters,
+ const RGWSyncModuleInstanceRef& _sync_module)
: store(_store), source_zone(_source_zone), conn(NULL), error_logger(NULL),
- sync_module(_sync_module),
+ sync_module(_sync_module), counters(counters),
source_log(this, store, async_rados), num_shards(0) {}
~RGWDataSyncStatusManager() {
finalize();
#include "rgw_object_expirer_core.h"
#include "rgw_sync.h"
+#include "rgw_sync_counters.h"
#include "rgw_sync_trace.h"
#include "rgw_data_sync.h"
#include "rgw_realm_watcher.h"
class RGWDataSyncProcessorThread : public RGWSyncProcessorThread
{
+ PerfCountersRef counters;
RGWDataSyncStatusManager sync;
bool initialized;
RGWDataSyncProcessorThread(RGWRados *_store, RGWAsyncRadosProcessor *async_rados,
const RGWZone* source_zone)
: RGWSyncProcessorThread(_store, "data-sync"),
- sync(_store, async_rados, source_zone->id),
+ counters(sync_counters::build(store->ctx(), std::string("data-sync-from-") + source_zone->name)),
+ sync(_store, async_rados, source_zone->id, counters.get()),
initialized(false) {}
void wakeup_sync_shards(map<int, set<string> >& shard_ids) {