]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/Elector: bootstrap on timeout 1250/head
authorSage Weil <sage@inktank.com>
Sat, 15 Feb 2014 16:59:51 +0000 (08:59 -0800)
committerSage Weil <sage@inktank.com>
Sat, 15 Feb 2014 16:59:51 +0000 (08:59 -0800)
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>
src/mon/Elector.cc

index 511d71411d96fa2f2157e18114a64d3b861684fb..3572c8b48c15acd234a725e6b80d0e9b08c274bc 100644 (file)
@@ -148,7 +148,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();
   }
 }