}
}
-bool MDSMonitor::has_health_warnings(vector<mds_metric_t> warnings)
+bool MDSMonitor::has_health_warnings(vector<mds_metric_t> warnings, mds_gid_t gid)
{
- for (auto& [gid, health] : pending_daemon_health) {
+ for (auto& [_gid, health] : pending_daemon_health) {
+ if (gid != MDS_GID_NONE) {
+ if (gid != mds_gid_t(_gid)) {
+ continue;
+ }
+ }
+
for (auto& metric : health.metrics) {
// metric.type here is the type of health warning. We are only
// looking for types of health warnings passed to this func member
}
if (!confirm &&
- has_health_warnings({MDS_HEALTH_TRIM, MDS_HEALTH_CACHE_OVERSIZED})) {
+ has_health_warnings({MDS_HEALTH_TRIM, MDS_HEALTH_CACHE_OVERSIZED}, gid)) {
ss << errmsg_for_unhealthy_mds;
return -EPERM;
}
bool preprocess_query(MonOpRequestRef op) override; // true if processed.
bool prepare_update(MonOpRequestRef op) override;
bool should_propose(double& delay) override;
- bool has_health_warnings(std::vector<mds_metric_t> warnings);
+ bool has_health_warnings(std::vector<mds_metric_t> warnings,
+ mds_gid_t gid=MDS_GID_NONE);
bool has_any_health_warning();
bool should_print_status() const {