From 17d6a993fc17d533460c5f40f3908c708e057c18 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 23 May 2024 18:45:17 +0200 Subject: Merging upstream version 18.2.3. Signed-off-by: Daniel Baumann --- src/mds/Beacon.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/mds/Beacon.cc') diff --git a/src/mds/Beacon.cc b/src/mds/Beacon.cc index 35f0f7942..5dd319a14 100644 --- a/src/mds/Beacon.cc +++ b/src/mds/Beacon.cc @@ -495,6 +495,28 @@ void Beacon::notify_health(MDSRank const *mds) MDSHealthMetric m(MDS_HEALTH_CACHE_OVERSIZED, HEALTH_WARN, css->strv()); health.metrics.push_back(m); } + + // Report laggy client(s) due to laggy OSDs + { + bool defer_client_eviction = + g_conf().get_val("defer_client_eviction_on_laggy_osds") + && mds->objecter->with_osdmap([](const OSDMap &map) { + return map.any_osd_laggy(); }); + auto&& laggy_clients = mds->server->get_laggy_clients(); + if (defer_client_eviction && !laggy_clients.empty()) { + std::vector laggy_clients_metrics; + for (const auto& laggy_client: laggy_clients) { + CachedStackStringStream css; + *css << "Client " << laggy_client << " is laggy; not evicted" + << " because some OSD(s) is/are laggy"; + MDSHealthMetric m(MDS_HEALTH_CLIENTS_LAGGY, HEALTH_WARN, css->strv()); + laggy_clients_metrics.emplace_back(std::move(m)); + } + auto&& m = laggy_clients_metrics; + health.metrics.insert(std::end(health.metrics), std::cbegin(m), + std::cend(m)); + } + } } MDSMap::DaemonState Beacon::get_want_state() const -- cgit v1.2.3