const std::set <std::string> &changed)
{
mdcache->handle_conf_change(conf, changed, *mdsmap);
+ sessionmap.handle_conf_change(conf, changed);
purge_queue.handle_conf_change(conf, changed, *mdsmap);
}
session->hit_session();
}
+void SessionMap::handle_conf_change(const struct md_config_t *conf,
+ const std::set <std::string> &changed) {
+ if (changed.count("mds_request_load_average_decay_rate")) {
+ decay_rate = conf->get_val<double>("mds_request_load_average_decay_rate");
+ dout(20) << __func__ << " decay rate changed to " << decay_rate << dendl;
+
+ total_load_avg_rate = DecayRate(decay_rate);
+
+ auto p = by_state.find(Session::STATE_OPEN);
+ if (p != by_state.end()) {
+ for (const auto &session : *(p->second)) {
+ session->set_load_avg_decay_rate(decay_rate);
+ }
+ }
+ p = by_state.find(Session::STATE_STALE);
+ if (p != by_state.end()) {
+ for (const auto &session : *(p->second)) {
+ session->set_load_avg_decay_rate(decay_rate);
+ }
+ }
+ }
+}
+
int SessionFilter::parse(
const std::vector<std::string> &args,
std::stringstream *ss)
public:
void hit_session(Session *session);
+ void handle_conf_change(const struct md_config_t *conf,
+ const std::set <std::string> &changed);
};
std::ostream& operator<<(std::ostream &out, const Session &s);