]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/tools/rbd_mirror/LeaderWatcher.cc
update sources to 12.2.10
[ceph.git] / ceph / src / tools / rbd_mirror / LeaderWatcher.cc
index ca0783679baeed18331f7a0b48d2947e53db95c5..4aadeb15db41c6c5fde0667cecb6ec099c548188 100644 (file)
@@ -33,7 +33,8 @@ LeaderWatcher<I>::LeaderWatcher(Threads<I> *threads, librados::IoCtx &io_ctx,
     m_lock("rbd::mirror::LeaderWatcher " + io_ctx.get_pool_name()),
     m_notifier_id(librados::Rados(io_ctx).get_instance_id()),
     m_leader_lock(new LeaderLock(m_ioctx, m_work_queue, m_oid, this, true,
-                                 m_cct->_conf->rbd_blacklist_expire_seconds)) {
+                                 m_cct->_conf->get_val<int64_t>(
+                                   "rbd_blacklist_expire_seconds"))) {
 }
 
 template <typename I>
@@ -370,8 +371,8 @@ void LeaderWatcher<I>::schedule_timer_task(const std::string &name,
       m_timer_gate->timer_callback = timer_callback;
     });
 
-  int after = delay_factor *
-    max(1, m_cct->_conf->rbd_mirror_leader_heartbeat_interval);
+  int after = delay_factor * m_cct->_conf->get_val<int64_t>(
+    "rbd_mirror_leader_heartbeat_interval");
 
   dout(20) << "scheduling " << name << " after " << after << " sec (task "
            << m_timer_task << ")" << dendl;
@@ -568,8 +569,8 @@ void LeaderWatcher<I>::handle_get_locker(int r,
     }
   }
 
-  if (m_acquire_attempts >=
-        m_cct->_conf->rbd_mirror_leader_max_acquire_attempts_before_break) {
+  if (m_acquire_attempts >= m_cct->_conf->get_val<int64_t>(
+        "rbd_mirror_leader_max_acquire_attempts_before_break")) {
     dout(0) << "breaking leader lock after " << m_acquire_attempts << " "
             << "failed attempts to acquire" << dendl;
     break_leader_lock();
@@ -605,7 +606,7 @@ void LeaderWatcher<I>::schedule_acquire_leader_lock(uint32_t delay_factor) {
 
   schedule_timer_task("acquire leader lock",
                       delay_factor *
-                        m_cct->_conf->rbd_mirror_leader_max_missed_heartbeats,
+                        m_cct->_conf->get_val<int64_t>("rbd_mirror_leader_max_missed_heartbeats"),
                       false, &LeaderWatcher<I>::acquire_leader_lock, false);
 }
 
@@ -1088,6 +1089,13 @@ void LeaderWatcher<I>::handle_notify(uint64_t notify_id, uint64_t handle,
   apply_visitor(HandlePayloadVisitor(this, ctx), notify_message.payload);
 }
 
+template <typename I>
+void LeaderWatcher<I>::handle_rewatch_complete(int r) {
+  dout(5) << "r=" << r << dendl;
+
+  m_leader_lock->reacquire_lock(nullptr);
+}
+
 template <typename I>
 void LeaderWatcher<I>::handle_payload(const HeartbeatPayload &payload,
                                       Context *on_notify_ack) {