summaryrefslogtreecommitdiff
path: root/src/mds
diff options
context:
space:
mode:
authorGreg Farnum <gregory.farnum@dreamhost.com>2012-01-10 10:41:36 -0800
committerGreg Farnum <gregory.farnum@dreamhost.com>2012-01-10 10:47:22 -0800
commitac9b2d092f1f075621f30f77cdbb49bdf35b9ae5 (patch)
treebda583dea82daf8633d8155dafa9aa12db9eb8e7 /src/mds
parent45897b52af6586ba213993cdc409a27b8f21a58c (diff)
downloadceph-ac9b2d092f1f075621f30f77cdbb49bdf35b9ae5.tar.gz
mds: initiate monitor reconnect if beacon acks take too long
If it takes 2*mds_beacon_grace (default 30 seconds total) seconds to get an ack back, maybe it's the monitor and not us. Try a reconnect, which will just add the teensiest bit of load if we're wrong. Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
Diffstat (limited to 'src/mds')
-rw-r--r--src/mds/MDS.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc
index a9b4001ff1d..a8c38a90e47 100644
--- a/src/mds/MDS.cc
+++ b/src/mds/MDS.cc
@@ -623,6 +623,12 @@ bool MDS::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)) {
+ // maybe it's not us?
+ dout(5) << "initiating monitor reconnect; maybe we're not the slow one"
+ << dendl;
+ monc->reopen_session();
+ }
return true;
}
return false;