From 9795f125d67cfa414ef59f60a9178ac254684633 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 19 Apr 2017 16:23:15 -0400 Subject: [PATCH] rbd-mirror: renamed Replayer to PoolReplayer This is a stepping stone to support multiple peers within a single pool. Signed-off-by: Jason Dillaman --- src/tools/rbd_mirror/CMakeLists.txt | 2 +- src/tools/rbd_mirror/Mirror.cc | 74 ++++--- src/tools/rbd_mirror/Mirror.h | 6 +- .../{Replayer.cc => PoolReplayer.cc} | 195 +++++++++--------- .../rbd_mirror/{Replayer.h => PoolReplayer.h} | 53 ++--- 5 files changed, 165 insertions(+), 165 deletions(-) rename src/tools/rbd_mirror/{Replayer.cc => PoolReplayer.cc} (76%) rename src/tools/rbd_mirror/{Replayer.h => PoolReplayer.h} (74%) diff --git a/src/tools/rbd_mirror/CMakeLists.txt b/src/tools/rbd_mirror/CMakeLists.txt index 4f1acbcbd4f..3fb0536c762 100644 --- a/src/tools/rbd_mirror/CMakeLists.txt +++ b/src/tools/rbd_mirror/CMakeLists.txt @@ -14,8 +14,8 @@ set(rbd_mirror_internal LeaderWatcher.cc Mirror.cc MirrorStatusWatcher.cc + PoolReplayer.cc PoolWatcher.cc - Replayer.cc Threads.cc types.cc image_replayer/BootstrapRequest.cc diff --git a/src/tools/rbd_mirror/Mirror.cc b/src/tools/rbd_mirror/Mirror.cc index 0424edd91dd..86c6939182f 100644 --- a/src/tools/rbd_mirror/Mirror.cc +++ b/src/tools/rbd_mirror/Mirror.cc @@ -254,18 +254,17 @@ void Mirror::run() m_local_cluster_watcher->refresh_pools(); Mutex::Locker l(m_lock); if (!m_manual_stop) { - update_replayers(m_local_cluster_watcher->get_pool_peers()); + update_pool_replayers(m_local_cluster_watcher->get_pool_peers()); } m_cond.WaitInterval( m_lock, utime_t(m_cct->_conf->rbd_mirror_pool_replayers_refresh_interval, 0)); } - // stop all replayers in parallel + // stop all pool replayers in parallel Mutex::Locker locker(m_lock); - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->stop(false); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->stop(false); } dout(20) << "return" << dendl; } @@ -282,12 +281,11 @@ void Mirror::print_status(Formatter *f, stringstream *ss) if (f) { f->open_object_section("mirror_status"); - f->open_array_section("replayers"); + f->open_array_section("pool_replayers"); }; - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->print_status(f, ss); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->print_status(f, ss); } if (f) { @@ -322,9 +320,8 @@ void Mirror::start() m_manual_stop = false; - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->start(); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->start(); } } @@ -339,9 +336,8 @@ void Mirror::stop() m_manual_stop = true; - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->stop(true); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->stop(true); } } @@ -356,9 +352,8 @@ void Mirror::restart() m_manual_stop = false; - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->restart(); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->restart(); } } @@ -371,9 +366,8 @@ void Mirror::flush() return; } - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->flush(); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->flush(); } } @@ -386,30 +380,29 @@ void Mirror::release_leader() return; } - for (auto it = m_replayers.begin(); it != m_replayers.end(); it++) { - auto &replayer = it->second; - replayer->release_leader(); + for (auto &pool_replayer : m_pool_replayers) { + pool_replayer.second->release_leader(); } } -void Mirror::update_replayers(const PoolPeers &pool_peers) +void Mirror::update_pool_replayers(const PoolPeers &pool_peers) { dout(20) << "enter" << dendl; assert(m_lock.is_locked()); - // remove stale replayers before creating new replayers - for (auto it = m_replayers.begin(); it != m_replayers.end();) { + // remove stale pool replayers before creating new pool replayers + for (auto it = m_pool_replayers.begin(); it != m_pool_replayers.end();) { auto &peer = it->first.second; auto pool_peer_it = pool_peers.find(it->first.first); if (it->second->is_blacklisted()) { - derr << "removing blacklisted replayer for " << peer << dendl; + derr << "removing blacklisted pool replayer for " << peer << dendl; // TODO: make async - it = m_replayers.erase(it); + it = m_pool_replayers.erase(it); } else if (pool_peer_it == pool_peers.end() || pool_peer_it->second.find(peer) == pool_peer_it->second.end()) { - dout(20) << "removing replayer for " << peer << dendl; + dout(20) << "removing pool replayer for " << peer << dendl; // TODO: make async - it = m_replayers.erase(it); + it = m_pool_replayers.erase(it); } else { ++it; } @@ -418,19 +411,22 @@ void Mirror::update_replayers(const PoolPeers &pool_peers) for (auto &kv : pool_peers) { for (auto &peer : kv.second) { PoolPeer pool_peer(kv.first, peer); - if (m_replayers.find(pool_peer) == m_replayers.end()) { - dout(20) << "starting replayer for " << peer << dendl; - unique_ptr replayer(new Replayer(m_threads, m_image_deleter, - m_image_sync_throttler, - kv.first, peer, m_args)); - // TODO: make async, and retry connecting within replayer - int r = replayer->init(); + if (m_pool_replayers.find(pool_peer) == m_pool_replayers.end()) { + dout(20) << "starting pool replayer for " << peer << dendl; + unique_ptr pool_replayer(new PoolReplayer( + m_threads, m_image_deleter, m_image_sync_throttler, kv.first, peer, + m_args)); + + // TODO: make async, and retry connecting within pool replayer + int r = pool_replayer->init(); if (r < 0) { continue; } - m_replayers.insert(std::make_pair(pool_peer, std::move(replayer))); + m_pool_replayers.emplace(pool_peer, std::move(pool_replayer)); } } + + // TODO currently only support a single peer } } diff --git a/src/tools/rbd_mirror/Mirror.h b/src/tools/rbd_mirror/Mirror.h index 59e0575358b..4ff9d512399 100644 --- a/src/tools/rbd_mirror/Mirror.h +++ b/src/tools/rbd_mirror/Mirror.h @@ -13,7 +13,7 @@ #include "include/atomic.h" #include "include/rados/librados.hpp" #include "ClusterWatcher.h" -#include "Replayer.h" +#include "PoolReplayer.h" #include "ImageDeleter.h" #include "types.h" @@ -53,7 +53,7 @@ private: typedef ClusterWatcher::PoolPeers PoolPeers; typedef std::pair PoolPeer; - void update_replayers(const PoolPeers &pool_peers); + void update_pool_replayers(const PoolPeers &pool_peers); CephContext *m_cct; std::vector m_args; @@ -66,7 +66,7 @@ private: std::unique_ptr m_local_cluster_watcher; std::shared_ptr m_image_deleter; ImageSyncThrottlerRef<> m_image_sync_throttler; - std::map > m_replayers; + std::map > m_pool_replayers; atomic_t m_stopping; bool m_manual_stop = false; MirrorAdminSocketHook *m_asok_hook; diff --git a/src/tools/rbd_mirror/Replayer.cc b/src/tools/rbd_mirror/PoolReplayer.cc similarity index 76% rename from src/tools/rbd_mirror/Replayer.cc rename to src/tools/rbd_mirror/PoolReplayer.cc index 7f8f9e2a304..6747ddc15aa 100644 --- a/src/tools/rbd_mirror/Replayer.cc +++ b/src/tools/rbd_mirror/PoolReplayer.cc @@ -1,8 +1,8 @@ // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab +#include "PoolReplayer.h" #include - #include "common/Formatter.h" #include "common/admin_socket.h" #include "common/ceph_argparse.h" @@ -20,14 +20,13 @@ #include "InstanceReplayer.h" #include "InstanceWatcher.h" #include "LeaderWatcher.h" -#include "Replayer.h" #include "Threads.h" #include "pool_watcher/RefreshImagesRequest.h" #define dout_context g_ceph_context #define dout_subsys ceph_subsys_rbd_mirror #undef dout_prefix -#define dout_prefix *_dout << "rbd::mirror::Replayer: " \ +#define dout_prefix *_dout << "rbd::mirror::PoolReplayer: " \ << this << " " << __func__ << ": " using std::chrono::seconds; @@ -44,95 +43,94 @@ namespace mirror { namespace { -class ReplayerAdminSocketCommand { +class PoolReplayerAdminSocketCommand { public: - virtual ~ReplayerAdminSocketCommand() {} + PoolReplayerAdminSocketCommand(PoolReplayer *pool_replayer) + : pool_replayer(pool_replayer) { + } + virtual ~PoolReplayerAdminSocketCommand() {} virtual bool call(Formatter *f, stringstream *ss) = 0; +protected: + PoolReplayer *pool_replayer; }; -class StatusCommand : public ReplayerAdminSocketCommand { +class StatusCommand : public PoolReplayerAdminSocketCommand { public: - explicit StatusCommand(Replayer *replayer) : replayer(replayer) {} + explicit StatusCommand(PoolReplayer *pool_replayer) + : PoolReplayerAdminSocketCommand(pool_replayer) { + } bool call(Formatter *f, stringstream *ss) override { - replayer->print_status(f, ss); + pool_replayer->print_status(f, ss); return true; } - -private: - Replayer *replayer; }; -class StartCommand : public ReplayerAdminSocketCommand { +class StartCommand : public PoolReplayerAdminSocketCommand { public: - explicit StartCommand(Replayer *replayer) : replayer(replayer) {} + explicit StartCommand(PoolReplayer *pool_replayer) + : PoolReplayerAdminSocketCommand(pool_replayer) { + } bool call(Formatter *f, stringstream *ss) override { - replayer->start(); + pool_replayer->start(); return true; } - -private: - Replayer *replayer; }; -class StopCommand : public ReplayerAdminSocketCommand { +class StopCommand : public PoolReplayerAdminSocketCommand { public: - explicit StopCommand(Replayer *replayer) : replayer(replayer) {} + explicit StopCommand(PoolReplayer *pool_replayer) + : PoolReplayerAdminSocketCommand(pool_replayer) { + } bool call(Formatter *f, stringstream *ss) override { - replayer->stop(true); + pool_replayer->stop(true); return true; } - -private: - Replayer *replayer; }; -class RestartCommand : public ReplayerAdminSocketCommand { +class RestartCommand : public PoolReplayerAdminSocketCommand { public: - explicit RestartCommand(Replayer *replayer) : replayer(replayer) {} + explicit RestartCommand(PoolReplayer *pool_replayer) + : PoolReplayerAdminSocketCommand(pool_replayer) { + } bool call(Formatter *f, stringstream *ss) override { - replayer->restart(); + pool_replayer->restart(); return true; } - -private: - Replayer *replayer; }; -class FlushCommand : public ReplayerAdminSocketCommand { +class FlushCommand : public PoolReplayerAdminSocketCommand { public: - explicit FlushCommand(Replayer *replayer) : replayer(replayer) {} + explicit FlushCommand(PoolReplayer *pool_replayer) + : PoolReplayerAdminSocketCommand(pool_replayer) { + } bool call(Formatter *f, stringstream *ss) override { - replayer->flush(); + pool_replayer->flush(); return true; } - -private: - Replayer *replayer; }; -class LeaderReleaseCommand : public ReplayerAdminSocketCommand { +class LeaderReleaseCommand : public PoolReplayerAdminSocketCommand { public: - explicit LeaderReleaseCommand(Replayer *replayer) : replayer(replayer) {} + explicit LeaderReleaseCommand(PoolReplayer *pool_replayer) + : PoolReplayerAdminSocketCommand(pool_replayer) { + } bool call(Formatter *f, stringstream *ss) override { - replayer->release_leader(); + pool_replayer->release_leader(); return true; } - -private: - Replayer *replayer; }; -class ReplayerAdminSocketHook : public AdminSocketHook { +class PoolReplayerAdminSocketHook : public AdminSocketHook { public: - ReplayerAdminSocketHook(CephContext *cct, const std::string &name, - Replayer *replayer) : - admin_socket(cct->get_admin_socket()) { + PoolReplayerAdminSocketHook(CephContext *cct, const std::string &name, + PoolReplayer *pool_replayer) + : admin_socket(cct->get_admin_socket()) { std::string command; int r; @@ -140,46 +138,46 @@ public: r = admin_socket->register_command(command, command, this, "get status for rbd mirror " + name); if (r == 0) { - commands[command] = new StatusCommand(replayer); + commands[command] = new StatusCommand(pool_replayer); } command = "rbd mirror start " + name; r = admin_socket->register_command(command, command, this, "start rbd mirror " + name); if (r == 0) { - commands[command] = new StartCommand(replayer); + commands[command] = new StartCommand(pool_replayer); } command = "rbd mirror stop " + name; r = admin_socket->register_command(command, command, this, "stop rbd mirror " + name); if (r == 0) { - commands[command] = new StopCommand(replayer); + commands[command] = new StopCommand(pool_replayer); } command = "rbd mirror restart " + name; r = admin_socket->register_command(command, command, this, "restart rbd mirror " + name); if (r == 0) { - commands[command] = new RestartCommand(replayer); + commands[command] = new RestartCommand(pool_replayer); } command = "rbd mirror flush " + name; r = admin_socket->register_command(command, command, this, "flush rbd mirror " + name); if (r == 0) { - commands[command] = new FlushCommand(replayer); + commands[command] = new FlushCommand(pool_replayer); } command = "rbd mirror leader release " + name; r = admin_socket->register_command(command, command, this, "release rbd mirror leader " + name); if (r == 0) { - commands[command] = new LeaderReleaseCommand(replayer); + commands[command] = new LeaderReleaseCommand(pool_replayer); } } - ~ReplayerAdminSocketHook() override { + ~PoolReplayerAdminSocketHook() override { for (Commands::const_iterator i = commands.begin(); i != commands.end(); ++i) { (void)admin_socket->unregister_command(i->first); @@ -200,7 +198,7 @@ public: } private: - typedef std::map Commands; + typedef std::map Commands; AdminSocket *admin_socket; Commands commands; @@ -208,40 +206,40 @@ private: } // anonymous namespace -struct Replayer::C_RefreshLocalImages : public Context { - Replayer *replayer; +struct PoolReplayer::C_RefreshLocalImages : public Context { + PoolReplayer *pool_replayer; Context *on_finish; ImageIds image_ids; - C_RefreshLocalImages(Replayer *replayer, Context *on_finish) - : replayer(replayer), on_finish(on_finish) { + C_RefreshLocalImages(PoolReplayer *pool_replayer, Context *on_finish) + : pool_replayer(pool_replayer), on_finish(on_finish) { } void finish(int r) override { - replayer->handle_refresh_local_images(r, std::move(image_ids), on_finish); + pool_replayer->handle_refresh_local_images(r, std::move(image_ids), on_finish); } }; -Replayer::Replayer(Threads *threads, - std::shared_ptr image_deleter, - ImageSyncThrottlerRef<> image_sync_throttler, - int64_t local_pool_id, const peer_t &peer, - const std::vector &args) : +PoolReplayer::PoolReplayer(Threads *threads, + std::shared_ptr image_deleter, + ImageSyncThrottlerRef<> image_sync_throttler, + int64_t local_pool_id, const peer_t &peer, + const std::vector &args) : m_threads(threads), m_image_deleter(image_deleter), m_image_sync_throttler(image_sync_throttler), - m_lock(stringify("rbd::mirror::Replayer ") + stringify(peer)), + m_lock(stringify("rbd::mirror::PoolReplayer ") + stringify(peer)), m_peer(peer), m_args(args), m_local_pool_id(local_pool_id), m_pool_watcher_listener(this), m_asok_hook(nullptr), - m_replayer_thread(this), + m_pool_replayer_thread(this), m_leader_listener(this) { } -Replayer::~Replayer() +PoolReplayer::~PoolReplayer() { delete m_asok_hook; @@ -250,8 +248,8 @@ Replayer::~Replayer() Mutex::Locker l(m_lock); m_cond.Signal(); } - if (m_replayer_thread.is_started()) { - m_replayer_thread.join(); + if (m_pool_replayer_thread.is_started()) { + m_pool_replayer_thread.join(); } if (m_leader_watcher) { m_leader_watcher->shut_down(); @@ -266,17 +264,17 @@ Replayer::~Replayer() assert(!m_pool_watcher); } -bool Replayer::is_blacklisted() const { +bool PoolReplayer::is_blacklisted() const { Mutex::Locker locker(m_lock); return m_blacklisted; } -bool Replayer::is_leader() const { +bool PoolReplayer::is_leader() const { Mutex::Locker locker(m_lock); return m_leader_watcher && m_leader_watcher->is_leader(); } -int Replayer::init() +int PoolReplayer::init() { dout(20) << "replaying for " << m_peer << dendl; @@ -344,14 +342,15 @@ int Replayer::init() return r; } - m_replayer_thread.create("replayer"); + m_pool_replayer_thread.create("pool replayer"); return 0; } -int Replayer::init_rados(const std::string &cluster_name, - const std::string &client_name, - const std::string &description, RadosRef *rados_ref) { +int PoolReplayer::init_rados(const std::string &cluster_name, + const std::string &client_name, + const std::string &description, + RadosRef *rados_ref) { rados_ref->reset(new librados::Rados()); // NOTE: manually bootstrap a CephContext here instead of via @@ -420,7 +419,7 @@ int Replayer::init_rados(const std::string &cluster_name, return 0; } -void Replayer::run() +void PoolReplayer::run() { dout(20) << "enter" << dendl; @@ -431,8 +430,8 @@ void Replayer::run() m_asok_hook_name = asok_hook_name; delete m_asok_hook; - m_asok_hook = new ReplayerAdminSocketHook(g_ceph_context, - m_asok_hook_name, this); + m_asok_hook = new PoolReplayerAdminSocketHook(g_ceph_context, + m_asok_hook_name, this); } Mutex::Locker locker(m_lock); @@ -446,7 +445,7 @@ void Replayer::run() } } -void Replayer::print_status(Formatter *f, stringstream *ss) +void PoolReplayer::print_status(Formatter *f, stringstream *ss) { dout(20) << "enter" << dendl; @@ -456,7 +455,7 @@ void Replayer::print_status(Formatter *f, stringstream *ss) Mutex::Locker l(m_lock); - f->open_object_section("replayer_status"); + f->open_object_section("pool_replayer_status"); f->dump_string("pool", m_local_io_ctx.get_pool_name()); f->dump_stream("peer") << m_peer; f->dump_string("instance_id", m_instance_watcher->get_instance_id()); @@ -483,7 +482,7 @@ void Replayer::print_status(Formatter *f, stringstream *ss) f->flush(*ss); } -void Replayer::start() +void PoolReplayer::start() { dout(20) << "enter" << dendl; @@ -496,7 +495,7 @@ void Replayer::start() m_instance_replayer->start(); } -void Replayer::stop(bool manual) +void PoolReplayer::stop(bool manual) { dout(20) << "enter: manual=" << manual << dendl; @@ -512,7 +511,7 @@ void Replayer::stop(bool manual) m_instance_replayer->stop(); } -void Replayer::restart() +void PoolReplayer::restart() { dout(20) << "enter" << dendl; @@ -525,7 +524,7 @@ void Replayer::restart() m_instance_replayer->restart(); } -void Replayer::flush() +void PoolReplayer::flush() { dout(20) << "enter" << dendl; @@ -538,7 +537,7 @@ void Replayer::flush() m_instance_replayer->flush(); } -void Replayer::release_leader() +void PoolReplayer::release_leader() { dout(20) << "enter" << dendl; @@ -551,9 +550,9 @@ void Replayer::release_leader() m_leader_watcher->release_leader(); } -void Replayer::handle_update(const std::string &mirror_uuid, - const ImageIds &added_image_ids, - const ImageIds &removed_image_ids) { +void PoolReplayer::handle_update(const std::string &mirror_uuid, + const ImageIds &added_image_ids, + const ImageIds &removed_image_ids) { assert(!mirror_uuid.empty()); if (m_stopping.read()) { return; @@ -619,17 +618,17 @@ void Replayer::handle_update(const std::string &mirror_uuid, gather_ctx->activate(); } -void Replayer::handle_post_acquire_leader(Context *on_finish) { +void PoolReplayer::handle_post_acquire_leader(Context *on_finish) { dout(20) << dendl; refresh_local_images(on_finish); } -void Replayer::handle_pre_release_leader(Context *on_finish) { +void PoolReplayer::handle_pre_release_leader(Context *on_finish) { dout(20) << dendl; shut_down_pool_watcher(on_finish); } -void Replayer::refresh_local_images(Context *on_finish) { +void PoolReplayer::refresh_local_images(Context *on_finish) { dout(20) << dendl; // ensure the initial set of local images is up-to-date @@ -640,8 +639,8 @@ void Replayer::refresh_local_images(Context *on_finish) { req->send(); } -void Replayer::handle_refresh_local_images(int r, ImageIds &&image_ids, - Context *on_finish) { +void PoolReplayer::handle_refresh_local_images(int r, ImageIds &&image_ids, + Context *on_finish) { dout(20) << "r=" << r << dendl; { @@ -658,7 +657,7 @@ void Replayer::handle_refresh_local_images(int r, ImageIds &&image_ids, init_pool_watcher(on_finish); } -void Replayer::init_pool_watcher(Context *on_finish) { +void PoolReplayer::init_pool_watcher(Context *on_finish) { dout(20) << dendl; Mutex::Locker locker(m_lock); @@ -671,7 +670,7 @@ void Replayer::init_pool_watcher(Context *on_finish) { m_cond.Signal(); } -void Replayer::shut_down_pool_watcher(Context *on_finish) { +void PoolReplayer::shut_down_pool_watcher(Context *on_finish) { dout(20) << dendl; { @@ -690,7 +689,7 @@ void Replayer::shut_down_pool_watcher(Context *on_finish) { on_finish->complete(0); } -void Replayer::handle_shut_down_pool_watcher(int r, Context *on_finish) { +void PoolReplayer::handle_shut_down_pool_watcher(int r, Context *on_finish) { dout(20) << "r=" << r << dendl; { @@ -701,7 +700,7 @@ void Replayer::handle_shut_down_pool_watcher(int r, Context *on_finish) { wait_for_update_ops(on_finish); } -void Replayer::wait_for_update_ops(Context *on_finish) { +void PoolReplayer::wait_for_update_ops(Context *on_finish) { dout(20) << dendl; Mutex::Locker locker(m_lock); @@ -714,7 +713,7 @@ void Replayer::wait_for_update_ops(Context *on_finish) { m_update_op_tracker.wait_for_ops(ctx); } -void Replayer::handle_wait_for_update_ops(int r, Context *on_finish) { +void PoolReplayer::handle_wait_for_update_ops(int r, Context *on_finish) { dout(20) << "r=" << r << dendl; assert(r == 0); diff --git a/src/tools/rbd_mirror/Replayer.h b/src/tools/rbd_mirror/PoolReplayer.h similarity index 74% rename from src/tools/rbd_mirror/Replayer.h rename to src/tools/rbd_mirror/PoolReplayer.h index b6649fb89a5..7de10a5c6a5 100644 --- a/src/tools/rbd_mirror/Replayer.h +++ b/src/tools/rbd_mirror/PoolReplayer.h @@ -1,8 +1,8 @@ // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab -#ifndef CEPH_RBD_MIRROR_REPLAYER_H -#define CEPH_RBD_MIRROR_REPLAYER_H +#ifndef CEPH_RBD_MIRROR_POOL_REPLAYER_H +#define CEPH_RBD_MIRROR_POOL_REPLAYER_H #include #include @@ -36,16 +36,16 @@ template class InstanceWatcher; /** * Controls mirroring for a single remote cluster. */ -class Replayer { +class PoolReplayer { public: - Replayer(Threads *threads, - std::shared_ptr image_deleter, - ImageSyncThrottlerRef<> image_sync_throttler, - int64_t local_pool_id, const peer_t &peer, - const std::vector &args); - ~Replayer(); - Replayer(const Replayer&) = delete; - Replayer& operator=(const Replayer&) = delete; + PoolReplayer(Threads *threads, + std::shared_ptr image_deleter, + ImageSyncThrottlerRef<> image_sync_throttler, + int64_t local_pool_id, const peer_t &peer, + const std::vector &args); + ~PoolReplayer(); + PoolReplayer(const PoolReplayer&) = delete; + PoolReplayer& operator=(const PoolReplayer&) = delete; bool is_blacklisted() const; bool is_leader() const; @@ -62,15 +62,17 @@ public: private: struct PoolWatcherListener : public PoolWatcher<>::Listener { - Replayer *replayer; + PoolReplayer *pool_replayer; - PoolWatcherListener(Replayer *replayer) : replayer(replayer) { + PoolWatcherListener(PoolReplayer *pool_replayer) + : pool_replayer(pool_replayer) { } void handle_update(const std::string &mirror_uuid, const ImageIds &added_image_ids, const ImageIds &removed_image_ids) override { - replayer->handle_update(mirror_uuid, added_image_ids, removed_image_ids); + pool_replayer->handle_update(mirror_uuid, added_image_ids, + removed_image_ids); } }; @@ -127,32 +129,35 @@ private: std::set m_init_image_ids; - class ReplayerThread : public Thread { - Replayer *m_replayer; + class PoolReplayerThread : public Thread { + PoolReplayer *m_pool_replayer; public: - ReplayerThread(Replayer *replayer) : m_replayer(replayer) {} + PoolReplayerThread(PoolReplayer *pool_replayer) + : m_pool_replayer(pool_replayer) { + } void *entry() override { - m_replayer->run(); + m_pool_replayer->run(); return 0; } - } m_replayer_thread; + } m_pool_replayer_thread; class LeaderListener : public LeaderWatcher<>::Listener { public: - LeaderListener(Replayer *replayer) : m_replayer(replayer) { + LeaderListener(PoolReplayer *pool_replayer) + : m_pool_replayer(pool_replayer) { } protected: void post_acquire_handler(Context *on_finish) override { - m_replayer->handle_post_acquire_leader(on_finish); + m_pool_replayer->handle_post_acquire_leader(on_finish); } void pre_release_handler(Context *on_finish) override { - m_replayer->handle_pre_release_leader(on_finish); + m_pool_replayer->handle_pre_release_leader(on_finish); } private: - Replayer *m_replayer; + PoolReplayer *m_pool_replayer; } m_leader_listener; std::unique_ptr > m_leader_watcher; @@ -163,4 +168,4 @@ private: } // namespace mirror } // namespace rbd -#endif // CEPH_RBD_MIRROR_REPLAYER_H +#endif // CEPH_RBD_MIRROR_POOL_REPLAYER_H -- 2.47.3