summaryrefslogtreecommitdiffstats
path: root/src/mds/Beacon.cc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-23 16:45:17 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-23 16:45:44 +0000
commit17d6a993fc17d533460c5f40f3908c708e057c18 (patch)
tree1a3bd93e0ecd74fa02f93a528fe2f87e5314c4b5 /src/mds/Beacon.cc
parentReleasing progress-linux version 18.2.2-0progress7.99u1. (diff)
downloadceph-17d6a993fc17d533460c5f40f3908c708e057c18.tar.xz
ceph-17d6a993fc17d533460c5f40f3908c708e057c18.zip
Merging upstream version 18.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/mds/Beacon.cc')
-rw-r--r--src/mds/Beacon.cc22
1 files changed, 22 insertions, 0 deletions
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<bool>("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<MDSHealthMetric> 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