From 814102ed7839b8f19e717b66fe1e9c64f92c3cf2 Mon Sep 17 00:00:00 2001 From: Xiubo Li Date: Thu, 1 Jun 2023 20:00:01 +0800 Subject: [PATCH] client: do not send metrics until the MDS rank is ready In some cases when there are a lot of clients and these clients have a lots of known requests need to replay too, the metrics requests will be dropped by the MDS because the MDS is still in the clientreplay state, and also the useless metric requests will slow down MDS. Fixes: https://tracker.ceph.com/issues/61523 Signed-off-by: Xiubo Li (cherry picked from commit a423e17d5bbd095af4472c087dbbc6ac0c5e9e61) --- src/client/Client.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/client/Client.cc b/src/client/Client.cc index 52980d5ecb07c..2e1b5aa7893d8 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6850,6 +6850,13 @@ void Client::collect_and_send_global_metrics() { ldout(cct, 20) << __func__ << dendl; ceph_assert(ceph_mutex_is_locked_by_me(client_lock)); + /* Do not send the metrics until the MDS rank is ready */ + if (!mdsmap->is_active((mds_rank_t)0)) { + ldout(cct, 5) << __func__ << " MDS rank 0 is not ready yet -- not sending metric" + << dendl; + return; + } + if (!have_open_session((mds_rank_t)0)) { ldout(cct, 5) << __func__ << ": no session with rank=0 -- not sending metric" << dendl; -- 2.39.5