#define dout_subsys ceph_subsys_rbd_mirror
#undef dout_prefix
-#define dout_prefix *_dout << "rbd-mirror: "
+#define dout_prefix *_dout << "rbd-mirror: ClusterWatcher::" << __func__ << ": "
using std::list;
using std::map;
void ClusterWatcher::refresh_pools()
{
- dout(20) << __func__ << dendl;
+ dout(20) << "enter" << dendl;
map<peer_t, set<int64_t> > peer_configs;
set<string> pool_names;
read_configs(&peer_configs, &pool_names);
#define dout_subsys ceph_subsys_rbd_mirror
#undef dout_prefix
-#define dout_prefix *_dout << "rbd-mirror: "
+#define dout_prefix *_dout << "rbd-mirror: Mirror::" << __func__ << ": "
using std::chrono::seconds;
using std::list;
void Mirror::run()
{
+ dout(20) << "enter" << dendl;
while (!m_stopping.read()) {
m_local_cluster_watcher->refresh_pools();
Mutex::Locker l(m_lock);
// TODO: make interval configurable
m_cond.WaitInterval(g_ceph_context, m_lock, seconds(30));
}
+ dout(20) << "return" << dendl;
}
void Mirror::update_replayers(const map<peer_t, set<int64_t> > &peer_configs)
{
+ dout(20) << "enter" << dendl;
assert(m_lock.is_locked());
set<peer_t> peers;
for (auto &kv : peer_configs) {
const peer_t &peer = kv.first;
if (m_replayers.find(peer) == m_replayers.end()) {
+ dout(20) << "starting replayer for " << peer << dendl;
unique_ptr<Replayer> replayer(new Replayer(m_local, peer));
// TODO: make async, and retry connecting within replayer
int r = replayer->init();
for (auto it = m_replayers.begin(); it != m_replayers.end();) {
peer_t peer = it->first;
if (peers.find(peer) == peers.end()) {
+ dout(20) << "removing replayer for " << peer << dendl;
m_replayers.erase(it++);
} else {
++it;
#define dout_subsys ceph_subsys_rbd_mirror
#undef dout_prefix
-#define dout_prefix *_dout << "rbd-mirror: "
+#define dout_prefix *_dout << "rbd-mirror: PoolWatcher::" << __func__ << ": "
using std::list;
using std::map;
void PoolWatcher::refresh_images(bool reschedule)
{
- dout(20) << __func__ << dendl;
+ dout(20) << "enter" << dendl;
map<int64_t, set<string> > images;
list<pair<int64_t, string> > pools;
int r = m_cluster->pool_list2(pools);
#define dout_subsys ceph_subsys_rbd_mirror
#undef dout_prefix
-#define dout_prefix *_dout << "rbd-mirror: "
+#define dout_prefix *_dout << "rbd-mirror: Replayer::" << __func__ << ": "
using std::chrono::seconds;
using std::map;
int Replayer::init()
{
- dout(20) << __func__ << "Replaying for " << m_peer << dendl;
+ dout(20) << "replaying for " << m_peer << dendl;
int r = m_remote->init2(m_peer.client_name.c_str(),
m_peer.cluster_name.c_str(), 0);
return r;
}
- dout(20) << __func__ << "connected to " << m_peer << dendl;
+ dout(20) << "connected to " << m_peer << dendl;
std::string uuid;
r = m_local->cluster_fsid(&uuid);
void Replayer::run()
{
+ dout(20) << "enter" << dendl;
+
while (!m_stopping.read()) {
Mutex::Locker l(m_lock);
set_sources(m_pool_watcher->get_images());
void Replayer::set_sources(const map<int64_t, set<string> > &images)
{
+ dout(20) << "enter" << dendl;
+
assert(m_lock.is_locked());
// TODO: make stopping and starting ImageReplayers async
for (auto it = m_images.begin(); it != m_images.end();) {