// schedule tick
reset_tick();
+ last_tick = g_clock.now();
mds_lock.Unlock();
return 0;
logclient.send_log();
+ utime_t now = g_clock.now();
+ utime_t delay = now;
+ delay -= last_tick;
+ if (delay > g_conf.mds_session_timeout / 2) {
+ dout(0) << " last tick was " << delay << " > " << g_conf.mds_tick_interval
+ << " seconds ago, laggy_until " << laggy_until
+ << ", setting laggy flag" << dendl;
+ laggy = true;
+ }
if (laggy)
return;
+ last_tick = now;
// make sure mds log flushes, trims periodically
mdlog->flush();
}
// log
- utime_t now = g_clock.now();
mds_load_t load = balancer->get_load(now);
if (logger) {
dout(1) << " clearing laggy flag" << dendl;
laggy = false;
laggy_until = now;
+ last_tick = now; // so that tick() will start up again
queue_waiters(waiting_for_nolaggy);
}
utime_t beacon_last_acked_stamp; // last time we sent a beacon that got acked
bool laggy;
utime_t laggy_until;
+ utime_t last_tick;
bool is_laggy() { return laggy; }
utime_t get_laggy_until() { return laggy_until; }