]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: don't kick clients if we've been laggy ourselves
authorSage Weil <sage@newdream.net>
Mon, 22 Mar 2010 20:39:40 +0000 (13:39 -0700)
committerSage Weil <sage@newdream.net>
Mon, 22 Mar 2010 20:39:40 +0000 (13:39 -0700)
src/TODO
src/mds/Server.cc

index a524254ca52298547ca40036b6cbe2c245b2bb15..5db30e3163d640dd5e9fb412b7229f1c946b900e 100644 (file)
--- a/src/TODO
+++ b/src/TODO
@@ -60,7 +60,6 @@ filestore
   - need an osdmap cache layer?
 
 bugs
-- be lenient about timing out clients if we are laggy ourselves
 - mds prepare_force_open_sessions, then import aborts.. session is still OPENING but no client_session is sent...
 - rm -r failure (on kernel tree)
 - dbench 1, restart mds (may take a few times), dbench will error out.
index ff4004a68ef2ef5a17ea1a13a07a87fe6557dc09..d74bf4b04b42125e8534041ae22167a62fdc2495 100644 (file)
@@ -407,6 +407,14 @@ void Server::find_idle_sessions()
   // autoclose
   cutoff = now;
   cutoff -= g_conf.mds_session_autoclose;
+
+  // don't kick clients if we've been laggy
+  if (mds->laggy_until > cutoff) {
+    dout(10) << " laggy_until " << mds->laggy_until << " > cutoff " << cutoff
+            << ", not kicking any clients to be safe" << dendl;
+    return;
+  }
+
   while (1) {
     Session *session = mds->sessionmap.get_oldest_session(Session::STATE_STALE);
     if (!session) break;