From: Xiubo Li Date: Thu, 1 Jun 2023 12:00:01 +0000 (+0800) Subject: client: do not send metrics until the MDS rank is ready X-Git-Tag: v19.0.0~862^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a423e17d5bbd095af4472c087dbbc6ac0c5e9e61;p=ceph.git 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 --- diff --git a/src/client/Client.cc b/src/client/Client.cc index a456ea2b81fe..89b74065b65a 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6927,6 +6927,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;