]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/Beacon: do not reconnect to mon in quick succession
authorSage Weil <sage@redhat.com>
Thu, 11 Sep 2014 05:13:42 +0000 (22:13 -0700)
committerSage Weil <sage@redhat.com>
Thu, 11 Sep 2014 15:35:49 +0000 (08:35 -0700)
Wait at least one beacon interval between mon session resets.

Fixes: #9428
Signed-off-by: Sage Weil <sage@redhat.com>
src/mds/Beacon.cc
src/mds/Beacon.h

index 7ccbe0e2aa4ce9212e333a558481473b3ec17cb7..1a295ce96f7e01b9534fdbfb4c9d115312761bf6 100644 (file)
@@ -207,10 +207,12 @@ bool Beacon::is_laggy()
     dout(5) << "is_laggy " << since << " > " << g_conf->mds_beacon_grace
            << " since last acked beacon" << dendl;
     was_laggy = true;
-    if (since > (g_conf->mds_beacon_grace*2)) {
+    if (since > (g_conf->mds_beacon_grace*2) &&
+       now > last_mon_reconnect + g_conf->mds_beacon_interval) {
       // maybe it's not us?
       dout(5) << "initiating monitor reconnect; maybe we're not the slow one"
               << dendl;
+      last_mon_reconnect = now;
       monc->reopen_session();
     }
     return true;
index a9ac549d0c5850359c88b3c2c479779abdbf5772..883044494839c91decce419f52e02db31f24644c 100644 (file)
@@ -57,6 +57,7 @@ class Beacon : public Dispatcher
   version_t               last_seq;          // last seq sent to monitor
   std::map<version_t,utime_t>  seq_stamp;    // seq # -> time sent
   utime_t                 last_acked_stamp;  // last time we sent a beacon that got acked
+  utime_t last_mon_reconnect;
   bool was_laggy;
   utime_t laggy_until;