]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PaxosService: add post_paxos_update() hook
authorSage Weil <sage@inktank.com>
Wed, 26 Jun 2013 13:52:01 +0000 (06:52 -0700)
committerSage Weil <sage@inktank.com>
Wed, 26 Jun 2013 13:55:02 +0000 (06:55 -0700)
Some services need to update internal state based on other service's
state, and thus need to be run after everyone has pulled their info out of
paxos.

Backport: cuttlefish
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/Monitor.cc
src/mon/PaxosService.h

index 4e428a881444603b6e004acc41604bcdfe0888d8..42bf9d5ac0b66c2ab53a7d62a2d27a79393dc8c9 100644 (file)
@@ -537,6 +537,9 @@ void Monitor::refresh_from_paxos(bool *need_bootstrap)
   for (int i = 0; i < PAXOS_NUM; ++i) {
     paxos_service[i]->refresh(need_bootstrap);
   }
+  for (int i = 0; i < PAXOS_NUM; ++i) {
+    paxos_service[i]->post_paxos_update();
+  }
 }
 
 void Monitor::register_cluster_logger()
index 8cd8908556bb532abfd180946fca998a315de60e..4981c34be47bba479c724d016552dc71ed5653e3 100644 (file)
@@ -347,6 +347,14 @@ public:
    */
   virtual void update_from_paxos(bool *need_bootstrap) = 0;
 
+  /**
+   * Hook called after all services have refreshed their state from paxos
+   *
+   * This is useful for doing any update work that depends on other
+   * service's having up-to-date state.
+   */
+  virtual void post_paxos_update() {}
+
   /**
    * Init on startup
    *