.set_default(2.0)
.set_description(""),
+ Option("mon_client_hunt_interval_min_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+ .set_default(1.0)
+ .set_description(""),
+
Option("mon_client_hunt_interval_max_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(10.0)
.set_description(""),
more_log_pending(false),
want_monmap(true),
had_a_connection(false),
- reopen_interval_multiplier(1.0),
+ reopen_interval_multiplier(
+ cct_->_conf->get_val<double>("mon_client_hunt_interval_min_multiple")),
last_mon_command_tid(0),
version_req_id(0)
{
}
had_a_connection = true;
- reopen_interval_multiplier /= 2.0;
- if (reopen_interval_multiplier < 1.0)
- reopen_interval_multiplier = 1.0;
+ _un_backoff();
}
void MonClient::tick()
schedule_tick();
}
+void MonClient::_un_backoff()
+{
+ // un-backoff our reconnect interval
+ reopen_interval_multiplier = std::max(
+ cct->_conf->get_val<double>("mon_client_hunt_interval_min_multiple"),
+ reopen_interval_multiplier /
+ cct->_conf->get_val<double>("mon_client_hunt_interval_backoff"));
+ ldout(cct, 20) << __func__ << " reopen_interval_multipler now "
+ << reopen_interval_multiplier << dendl;
+}
+
void MonClient::schedule_tick()
{
struct C_Tick : public Context {
void _finish_auth(int auth_err);
void _reopen_session(int rank = -1);
MonConnection& _add_conn(unsigned rank, uint64_t global_id);
+ void _un_backoff();
void _add_conns(uint64_t global_id);
void _send_mon_message(Message *m);