services:
- mds
with_legacy: true
+- name: mds_heartbeat_reset_grace
+ type: uint
+ level: advanced
+ desc: the basic unit of tolerance in how many circles in a loop, which will
+ keep running by holding the mds_lock, it must trigger to reset heartbeat
+ default: 1000
+ services:
+ - mds
- name: mds_heartbeat_grace
type: float
level: advanced
server = new Server(this, &metrics_handler);
locker = new Locker(this, mdcache);
+ _heartbeat_reset_grace = g_conf().get_val<uint64_t>("mds_heartbeat_reset_grace");
heartbeat_grace = g_conf().get_val<double>("mds_heartbeat_grace");
op_tracker.set_complaint_and_threshold(cct->_conf->mds_op_complaint_time,
cct->_conf->mds_op_log_threshold);
"mds_recall_warning_decay_rate",
"mds_request_load_average_decay_rate",
"mds_session_cache_liveness_decay_rate",
+ "mds_heartbeat_reset_grace",
"mds_heartbeat_grace",
"mds_session_cap_acquisition_decay_rate",
"mds_max_caps_per_client",
{
// XXX with or without mds_lock!
+ if (changed.count("mds_heartbeat_reset_grace")) {
+ _heartbeat_reset_grace = conf.get_val<uint64_t>("mds_heartbeat_reset_grace");
+ }
if (changed.count("mds_heartbeat_grace")) {
heartbeat_grace = conf.get_val<double>("mds_heartbeat_grace");
}
* of code while holding the mds_lock
*/
void heartbeat_reset();
+ int heartbeat_reset_grace(int count=1) {
+ return count * _heartbeat_reset_grace;
+ }
/**
* Report state DAMAGED to the mon, and then pass on to respawn(). Call
ceph::heartbeat_handle_d *hb = nullptr; // Heartbeat for threads using mds_lock
double heartbeat_grace;
+ int _heartbeat_reset_grace;
std::map<mds_rank_t, version_t> peer_mdsmap_epoch;