]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/Elector: bootstrap on timeout 1485/head
authorSage Weil <sage@inktank.com>
Sat, 15 Feb 2014 16:59:51 +0000 (08:59 -0800)
committerJoao Eduardo Luis <jecluis@gmail.com>
Mon, 17 Mar 2014 15:43:53 +0000 (15:43 +0000)
Currently if an election times out we call a new
election.  If we have never joined a quorum, bootstrap
instead. This is heavier weight, but captures the case
where, during bootstrap:

 - a and b have learned each others' addresses
 - everybody calls an election
 - a and b form a quorum
 - c loops trying to call an election, but is ignored
   because a and b don't see its address in the monmap

See logs:
  ubuntu@teuthology:/var/lib/teuthworker/archive/sage-2014-02-14_13:50:04-ceph-deploy-wip-7212-sage-b-testing-basic-plana/83194

Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit a4bcb1f8129a4ece97bd3419abf1ff45d260ad8e)
(cherry picked from commit 143ec0281aa8b640617a3fe19a430248ce3b514c)

src/mon/Elector.cc

index 1650a997b2d096164838eada56860ae756058944..dc234282facc3d6f3726c6b3e3d837fbadafcbb1 100644 (file)
@@ -143,7 +143,10 @@ void Elector::expire()
     victory();
   } else {
     // whoever i deferred to didn't declare victory quickly enough.
-    start();
+    if (mon->has_ever_joined)
+      start();
+    else
+      mon->bootstrap();
   }
 }