]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cephfs_mirror: increment sync_failures when sync_perms() and sync_snaps() fails
authorJos Collin <jcollin@redhat.com>
Tue, 12 Mar 2024 06:07:18 +0000 (11:37 +0530)
committerJos Collin <jcollin@redhat.com>
Wed, 10 Apr 2024 12:14:27 +0000 (17:44 +0530)
When sync_perms() fails  _inc_failed_count() is called for incrementing the failed count.
So it's better reflect that in the metrics too. Does the same for sync_snaps() too.

Fixes: https://tracker.ceph.com/issues/65345
Signed-off-by: Jos Collin <jcollin@redhat.com>
src/tools/cephfs_mirror/PeerReplayer.cc
src/tools/cephfs_mirror/PeerReplayer.h

index e92021d19bbb4ab3b2c07be66351b8d67d98c56a..1f8ff76837311faccf232f82964f855d80dbbe27 100644 (file)
@@ -1705,7 +1705,7 @@ int PeerReplayer::do_sync_snaps(const std::string &dir_root) {
   return 0;
 }
 
-void PeerReplayer::sync_snaps(const std::string &dir_root,
+int PeerReplayer::sync_snaps(const std::string &dir_root,
                               std::unique_lock<ceph::mutex> &locker) {
   dout(20) << ": dir_root=" << dir_root << dendl;
   locker.unlock();
@@ -1716,12 +1716,10 @@ void PeerReplayer::sync_snaps(const std::string &dir_root,
   locker.lock();
   if (r < 0) {
     _inc_failed_count(dir_root);
-    if (m_perf_counters) {
-      m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snap_sync_failures);
-    }
   } else {
     _reset_failed_count(dir_root);
   }
+  return r;
 }
 
 void PeerReplayer::run(SnapshotReplayerThread *replayer) {
@@ -1758,13 +1756,19 @@ void PeerReplayer::run(SnapshotReplayerThread *replayer) {
         dout(5) << ": picked dir_root=" << *dir_root << dendl;
         int r = register_directory(*dir_root, replayer);
         if (r == 0) {
-         r = sync_perms(*dir_root);
-         if (r < 0) {
-           _inc_failed_count(*dir_root);
-         } else {
-           sync_snaps(*dir_root, locker);
-         }
-         unregister_directory(*dir_root);
+          r = sync_perms(*dir_root);
+          if (r == 0) {
+            r = sync_snaps(*dir_root, locker);
+            if (r < 0 && m_perf_counters) {
+              m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snap_sync_failures);
+            }
+          } else {
+            _inc_failed_count(*dir_root);
+            if (m_perf_counters) {
+              m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snap_sync_failures);
+            }
+          }
+          unregister_directory(*dir_root);
         }
       }
 
index 24db5a7f81459a9cbe7168bcc24bd5ab65c29786..35918fc6e49ea18f19bf9b222d7820f96ce4481d 100644 (file)
@@ -276,7 +276,7 @@ private:
   int try_lock_directory(const std::string &dir_root, SnapshotReplayerThread *replayer,
                          DirRegistry *registry);
   void unlock_directory(const std::string &dir_root, const DirRegistry &registry);
-  void sync_snaps(const std::string &dir_root, std::unique_lock<ceph::mutex> &locker);
+  int sync_snaps(const std::string &dir_root, std::unique_lock<ceph::mutex> &locker);
 
 
   int build_snap_map(const std::string &dir_root, std::map<uint64_t, std::string> *snap_map,