]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd_mirror: document the basic state flow for pool watcher
authorJason Dillaman <dillaman@redhat.com>
Thu, 8 Mar 2018 21:28:11 +0000 (16:28 -0500)
committerJason Dillaman <dillaman@redhat.com>
Tue, 10 Apr 2018 20:31:32 +0000 (16:31 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/tools/rbd_mirror/PoolReplayer.h

index c9967700d9d1246a0a3b7454f4754e036bc52475..f17bd9eb878cb233c71ab1f32b1e90040b31d2a1 100644 (file)
@@ -65,6 +65,39 @@ public:
   void release_leader();
 
 private:
+  /**
+   * @verbatim
+   *
+   * <start>
+   *    |
+   *    v
+   *  INIT
+   *    |
+   *    v
+   * <follower> <-------------------------\
+   *    .                                 |
+   *    .                                 |
+   *    v (leader acquired)               |
+   * INIT_LOCAL_POOL_WATCHER    WAIT_FOR_NOTIFICATIONS
+   *    |                                 ^
+   *    v                                 |
+   * INIT_REMOTE_POOL_WATCHER   SHUT_DOWN_POOL_WATCHERS
+   *    |                                 ^
+   *    v                                 |
+   * INIT_IMAGE_DELETER         SHUT_DOWN_IMAGE_DELETER
+   *    |                                 ^
+   *    v                                 .
+   * <leader> <-----------\               .
+   *    .                 |               .
+   *    . (image update)  |               .
+   *    . . > NOTIFY_INSTANCE_WATCHER     .
+   *    .                                 .
+   *    . (leader lost / shut down)       .
+   *    . . . . . . . . . . . . . . . . . .
+   *
+   * @endverbatim
+   */
+
   struct PoolWatcherListener : public PoolWatcher<>::Listener {
     PoolReplayer *pool_replayer;
     bool local;