session renew messages from clients can be in the dispatch queue,
waiting for getting dispatched.
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
return beacon.get_laggy_until();
}
+double MDSRank::get_dispatch_queue_max_age(utime_t now) const
+{
+ return messenger->get_dispatch_queue_max_age(now);
+}
+
bool MDSRank::is_daemon_stopping() const
{
return stopping;
void damaged_unlocked();
utime_t get_laggy_until() const;
+ double get_dispatch_queue_max_age(utime_t now) const;
void send_message_mds(Message *m, mds_rank_t mds);
void forward_message_mds(Message *req, mds_rank_t mds);
// timeout/stale
// (caps go stale, lease die)
utime_t now = ceph_clock_now();
+ double queue_max_age = mds->get_dispatch_queue_max_age(now);
+
utime_t cutoff = now;
+ cutoff -= queue_max_age;
cutoff -= mds->mdsmap->get_session_timeout();
while (1) {
Session *session = mds->sessionmap.get_oldest_session(Session::STATE_OPEN);
// autoclose
cutoff = now;
+ cutoff -= queue_max_age;
cutoff -= mds->mdsmap->get_session_autoclose();
// don't kick clients if we've been laggy