]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: log before respawning when standby-replay falls behind
authorSage Weil <sage@inktank.com>
Fri, 28 Jun 2013 21:20:28 +0000 (14:20 -0700)
committerSage Weil <sage@inktank.com>
Fri, 28 Jun 2013 21:25:12 +0000 (14:25 -0700)
Call into an MDS method so that we can write to the log.

Signed-off-by: Sage Weil <sage@inktank.com>
src/mds/MDS.cc
src/mds/MDS.h

index 552f103f126a8285f2f1eb9af3f3f76a5c2d7d43..a867961ccf3aa644700ec2443ff280882a267248 100644 (file)
@@ -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;
index 6729c7caeec45daa856f32c2167b296a66d37919..764b4e206b5c9f78bb3718cc9fdfc1d56489b630 100644 (file)
@@ -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;