From: Sage Weil Date: Sun, 26 Feb 2017 19:16:13 +0000 (-0500) Subject: mon: add a finisher X-Git-Tag: v12.0.2~252^2~51 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cc6e568baa6de5cb3900bc89b3a2a7fcba935c57;p=ceph.git mon: add a finisher Signed-off-by: Sage Weil --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 2da72ba2b623..461dc6ad6c37 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -156,6 +156,7 @@ Monitor::Monitor(CephContext* cct_, string nm, MonitorDBStore *s, con_self(m ? m->get_loopback_connection() : NULL), lock("Monitor::lock"), timer(cct_, lock), + finisher(cct_, "mon_finisher", "fin"), cpu_tp(cct, "Monitor::cpu_tp", "cpu_tp", g_conf->mon_cpu_threads), has_ever_joined(false), logger(NULL), cluster_logger(NULL), cluster_logger_registered(false), @@ -836,6 +837,8 @@ int Monitor::init() dout(2) << "init" << dendl; Mutex::Locker l(lock); + finisher.start(); + // start ticker timer.init(); new_tick(); @@ -962,6 +965,11 @@ void Monitor::shutdown() mgr_client.shutdown(); + lock.Unlock(); + finisher.wait_for_empty(); + finisher.stop(); + lock.Lock(); + // clean up paxos->shutdown(); for (vector::iterator p = paxos_service.begin(); p != paxos_service.end(); ++p) diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index ea019652c082..6fb6229b3691 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -124,6 +124,7 @@ public: ConnectionRef con_self; Mutex lock; SafeTimer timer; + Finisher finisher; ThreadPool cpu_tp; ///< threadpool for CPU intensive work /// true if we have ever joined a quorum. if false, we are either a