]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephfs-mirror: record failed FSMirror instances
authorVenky Shankar <vshankar@redhat.com>
Wed, 16 Sep 2020 04:34:56 +0000 (00:34 -0400)
committerVenky Shankar <vshankar@redhat.com>
Thu, 24 Sep 2020 12:18:11 +0000 (08:18 -0400)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/tools/cephfs_mirror/FSMirror.cc
src/tools/cephfs_mirror/FSMirror.h

index a0bae498be12a6382c0212206b5a396a49c7d972..e6563bdd1c47de2b746f1da7ef60ad2c580a643e 100644 (file)
@@ -268,8 +268,8 @@ void FSMirror::init_instance_watcher(Context *on_finish) {
   dout(20) << dendl;
 
   m_on_init_finish = new LambdaContext([this, on_finish](int r) {
-                                         if (r == 0 ) {
-                                           init_replayers();
+                                         if (r < 0) {
+                                           m_init_failed = true;
                                          }
                                          on_finish->complete(r);
                                          if (m_on_shutdown_finish != nullptr) {
@@ -420,14 +420,18 @@ void FSMirror::remove_peer(const Peer &peer) {
 void FSMirror::mirror_status(Formatter *f) {
   std::scoped_lock locker(m_lock);
   f->open_object_section("status");
-  f->open_object_section("peers");
-  for ([[maybe_unused]] auto &[peer, peer_replayer] : m_peer_replayers) {
-    peer.dump(f);
+  if (m_init_failed) {
+    f->dump_string("state", "failed");
+  } else {
+    f->open_object_section("peers");
+    for ([[maybe_unused]] auto &[peer, peer_replayer] : m_peer_replayers) {
+      peer.dump(f);
+    }
+    f->close_section(); // peers
+    f->open_object_section("snap_dirs");
+    f->dump_int("dir_count", m_directories.size());
+    f->close_section(); // snap_dirs
   }
-  f->close_section(); // peers
-  f->open_object_section("snap_dirs");
-  f->dump_int("dir_count", m_directories.size());
-  f->close_section(); // snap_dirs
   f->close_section(); // status
 }
 
index 575fa9c6cd152fcdb723041a1f92f1195b8c3eac..d5584497a630f63dc6bb45b247862aabb02ee657 100644 (file)
@@ -37,6 +37,11 @@ public:
     return m_stopping;
   }
 
+  bool is_failed() {
+    std::scoped_lock locker(m_lock);
+    return m_init_failed;
+  }
+
   // admin socket helpers
   void mirror_status(Formatter *f);