From e74f11546a1b2b57ce9358c89785bddc843cfe5e Mon Sep 17 00:00:00 2001 From: Kotresh HR Date: Mon, 15 Jun 2026 00:11:07 +0530 Subject: [PATCH] tools/cephfs_mirror: Ignore duplicate directory acquire notifications Make PeerReplayer::add_directory() idempotent when the mgr re-sends acquire for a directory already in the replayer list. Fixes: https://tracker.ceph.com/issues/77398 Signed-off-by: Kotresh HR --- src/tools/cephfs_mirror/PeerReplayer.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/tools/cephfs_mirror/PeerReplayer.cc b/src/tools/cephfs_mirror/PeerReplayer.cc index 7ee7e06b757..93bc04ddaf8 100644 --- a/src/tools/cephfs_mirror/PeerReplayer.cc +++ b/src/tools/cephfs_mirror/PeerReplayer.cc @@ -357,10 +357,16 @@ void PeerReplayer::shutdown() { void PeerReplayer::add_directory(string_view dir_root) { dout(20) << ": dir_root=" << dir_root << dendl; + auto _dir_root = std::string(dir_root); std::scoped_lock locker(m_lock); - m_directories.emplace_back(dir_root); - m_snap_sync_stats.emplace(dir_root, SnapSyncStat()); + if (std::find(m_directories.begin(), m_directories.end(), _dir_root) != + m_directories.end()) { + dout(10) << ": dir_root=" << _dir_root << " already in replay list" << dendl; + return; + } + m_directories.emplace_back(_dir_root); + m_snap_sync_stats.emplace(_dir_root, SnapSyncStat()); m_cond.notify_all(); } -- 2.47.3