Moved dout() statement out of trim_expired_segments() to avoid
dereferencing 'this' object after object deletion via context completion
handler.
Fixes: https://tracker.ceph.com/issues/69953
Signed-off-by: Milind Changire <mchangir@redhat.com>
(cherry picked from commit
d14fb9a44ac481bca9f87900aa6a73ec96a3cdce)
Conflicts:
src/mds/MDSRank.cc
- resolved conflicts between main and squid branches
// Now everyone I'm interested in is expired
mdlog->trim_expired_segments();
- dout(5) << __func__ << ": trim complete, expire_pos/trim_pos is now "
- << std::hex << mdlog->get_journaler()->get_expire_pos() << "/"
- << mdlog->get_journaler()->get_trimmed_pos() << dendl;
-
write_journal_head();
}
void finish(int r) override {
dout(20) << __func__ << ": r=" << r << dendl;
+
+ dout(5) << __func__ << ": trimming is complete; wait for journal head write. Journal expire_pos/trim_pos is now "
+ << std::hex << mdlog->get_journaler()->get_expire_pos() << "/"
+ << mdlog->get_journaler()->get_trimmed_pos() << dendl;
on_finish->complete(r);
}