]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: The primary GR does not need to wait for the remote to be ready
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>
Mon, 10 Mar 2025 10:42:33 +0000 (16:12 +0530)
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>
Thu, 24 Apr 2025 15:56:33 +0000 (21:26 +0530)
The following "remote is not ready yet"  error is not required in case
of primary:

[root@server1 build]# rbd-a mirror group status data/grp1
grp1:
  global_id:   a04e99a8-fc4b-4345-adb8-b97a51dc4cac
  state:       up+error
  description: remote is not ready yet
  service:     admin on server1.lab.eng.blr.redhat.com
  last_update: 2025-03-05 12:02:41
  images:

Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
src/tools/rbd_mirror/GroupReplayer.cc

index dc50e93f2a38b3d2e72bcc817ea546b897c9255a..ed2baaeccdaea5e30f58b8a4740d3afbe86548ae 100644 (file)
@@ -572,14 +572,6 @@ void GroupReplayer<I>::handle_bootstrap_group(int r) {
   } else if (r == -EEXIST) {
     finish_start_fail(r, "split-brain detected");
     return;
-  } else if (m_remote_group_id.empty()){
-    r = -EINVAL;
- //FIXME: The primary should not care if the remote is ready.
- // Bootstrap again when the replayer is restarted
-    finish_start_fail(r, "remote is not ready yet");
-    return;
-  } else if (r == -EINVAL) {
-    sync_group_names();
   } else if (r < 0) {
     finish_start_fail(r, "bootstrap failed");
     return;
@@ -591,6 +583,10 @@ void GroupReplayer<I>::handle_bootstrap_group(int r) {
        "local group is primary");
     finish_start_fail(0, "local group is primary");
     return;
+  } else if (m_remote_group_id.empty()) { // m_remote_group_id matter for
+                                          // secondary cluster case.
+    finish_start_fail(-EINVAL, "remote is not ready yet");
+    return;
   }
 
   m_local_group_ctx.listener = &m_listener;