]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MonClient: factor un-backoff into helper; add missing config option
authorSage Weil <sage@redhat.com>
Tue, 25 Jul 2017 22:41:53 +0000 (18:41 -0400)
committerSage Weil <sage@redhat.com>
Wed, 26 Jul 2017 11:53:31 +0000 (07:53 -0400)
- move this into a helper
- use the backoff factor for the division instead of hard-coding 2.0
- add a min config option instead of hard-coding 1.0

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/options.cc
src/mon/MonClient.cc
src/mon/MonClient.h

index c98bd30a9382313d47b23d4054c94c3b85827ead..d5bb61c229499091adca31ecc205843323a5fd8c 100644 (file)
@@ -1427,6 +1427,10 @@ std::vector<Option> global_options = {
   .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(""),
index bc5626dad58e41687cc7b8b4c97bfc8929c09448..96975b31c528dc87bdc65c497f7e2aecbf6163ef 100644 (file)
@@ -55,7 +55,8 @@ MonClient::MonClient(CephContext *cct_) :
   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)
 {
@@ -729,9 +730,7 @@ void MonClient::_finish_hunting()
   }
 
   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()
@@ -775,6 +774,17 @@ 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 {
index 283f2335c0287f91a7d1695962ff11678f51531c..0b24e01e2bace5fe884b8265804d6a64d1986a47 100644 (file)
@@ -210,6 +210,7 @@ private:
   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);