return r;
}
inc_deleted_snap(dir_root);
+ persist_dir_sync_stat(dir_root);
if (m_perf_counters) {
m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snaps_deleted);
}
return r;
}
inc_renamed_snap(dir_root);
+ persist_dir_sync_stat(dir_root);
if (m_perf_counters) {
m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snaps_renamed);
}
}
set_last_synced_stat(dir_root, it->first, it->second, duration);
+ persist_dir_sync_stat(dir_root);
if (--snaps_per_cycle == 0) {
break;
}
update_directory_current_sync_perf_counters(dir_perf,
m_snap_sync_stats.at(dir_root));
}
+ if (r < 0) {
+ locker.unlock();
+ persist_dir_sync_stat(dir_root);
+ locker.lock();
+ }
return r;
}
for (const auto &kv : m_registered) {
refresh_directory_current_sync_perf_counters(kv.first);
}
+
+ // persist sync stats to omap for registered directories
+ std::vector<std::string> dirs;
+ dirs.reserve(m_registered.size());
+ for (const auto &kv : m_registered) {
+ dirs.push_back(kv.first);
+ }
+ locker.unlock();
+ for (const auto &dir_root : dirs) {
+ persist_dir_sync_stat(dir_root);
+ }
+ locker.lock();
}
}
update_directory_current_sync_perf_counters(
dir_perf, m_snap_sync_stats.at(*dir_root));
}
+ locker.unlock();
+ persist_dir_sync_stat(*dir_root);
+ locker.lock();
if (m_perf_counters) {
m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snap_sync_failures);
}