Skip to content

Commit

Permalink
cephfs_mirror: check if init in progress before calling FSMirror::is_…
Browse files Browse the repository at this point in the history
…failed()

Fixes the crash:
```
std::scoped_lock<std::mutex>::scoped_lock (__m=..., this=<optimized out>, this=<optimized out>, __m=...) at /usr/include/c++/11/mutex:655
cephfs::mirror::MirrorWatcher::is_failed (this=0x0) at /usr/src/debug/ceph-19.0.0-1578.g3d482f42.el9.x86_64/src/tools/cephfs_mirror/MirrorWatcher.h:56
cephfs::mirror::FSMirror::is_failed (this=0x557478284340) at /usr/src/debug/ceph-19.0.0-1578.g3d482f42.el9.x86_64/src/tools/cephfs_mirror/FSMirror.h:52
cephfs::mirror::Mirror::update_fs_mirrors (this=0x5574773c3e60) at /usr/src/debug/ceph-19.0.0-1578.g3d482f42.el9.x86_64/src/tools/cephfs_mirror/Mirror.cc:515

```

Fixes: https://tracker.ceph.com/issues/64751
Signed-off-by: Jos Collin <jcollin@redhat.com>
  • Loading branch information
joscollin committed Mar 26, 2024
1 parent d7353ad commit 505a92f
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/tools/cephfs_mirror/Mirror.cc
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,8 @@ void Mirror::update_fs_mirrors() {
{
std::scoped_lock locker(m_lock);
for (auto &[filesystem, mirror_action] : m_mirror_actions) {
auto failed_restart = mirror_action.fs_mirror && mirror_action.fs_mirror->is_failed() &&
bool failed = mirror_action.fs_mirror->m_on_init_finish == nullptr)? mirror_action.fs_mirror->is_failed(): false;
auto failed_restart = mirror_action.fs_mirror && failed &&
(failed_interval > 0 && (mirror_action.fs_mirror->get_failed_ts() - now) > failed_interval);
auto blocklisted_restart = mirror_action.fs_mirror && mirror_action.fs_mirror->is_blocklisted() &&
(blocklist_interval > 0 && (mirror_action.fs_mirror->get_blocklisted_ts() - now) > blocklist_interval);
Expand Down

0 comments on commit 505a92f

Please sign in to comment.