From: Sage Weil Date: Fri, 28 Jun 2013 21:20:28 +0000 (-0700) Subject: mds: log before respawning when standby-replay falls behind X-Git-Tag: v0.67-rc1~172 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e235958fb13e654aa1ad5e1c5a6ccf76a95196ca;p=ceph.git mds: log before respawning when standby-replay falls behind Call into an MDS method so that we can write to the log. Signed-off-by: Sage Weil --- diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 552f103f126..a867961ccf3 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -1334,17 +1334,22 @@ public: C_MDS_StandbyReplayRestartFinish(MDS *mds_, uint64_t old_read_pos_) : mds(mds_), old_read_pos(old_read_pos_) {} void finish(int r) { - if (old_read_pos < mds->mdlog->get_journaler()->get_trimmed_pos()) { - cerr << "standby MDS fell behind active MDS journal's expire_pos, restarting" << std::endl; - mds->respawn(); /* we're too far back, and this is easier than - trying to reset everything in the cache, etc */ - } else { - mds->mdlog->standby_trim_segments(); - mds->boot_start(3, r); - } + mds->_standby_replay_restart_finish(r, old_read_pos); } }; +void MDS::_standby_replay_restart_finish(int r, uint64_t old_read_pos) +{ + if (old_read_pos < mdlog->get_journaler()->get_trimmed_pos()) { + dout(0) << "standby MDS fell behind active MDS journal's expire_pos, restarting" << dendl; + respawn(); /* we're too far back, and this is easier than + trying to reset everything in the cache, etc */ + } else { + mdlog->standby_trim_segments(); + boot_start(3, r); + } +} + inline void MDS::standby_replay_restart() { dout(1) << "standby_replay_restart" << (standby_replaying ? " (as standby)":" (final takeover pass)") << dendl; diff --git a/src/mds/MDS.h b/src/mds/MDS.h index 6729c7caeec..764b4e206b5 100644 --- a/src/mds/MDS.h +++ b/src/mds/MDS.h @@ -372,6 +372,7 @@ class MDS : public Dispatcher { void starting_done(); void replay_done(); void standby_replay_restart(); + void _standby_replay_restart_finish(int r, uint64_t old_read_pos); class C_MDS_StandbyReplayRestart; class C_MDS_StandbyReplayRestartFinish;