From: Sage Weil Date: Sat, 15 Feb 2014 16:59:51 +0000 (-0800) Subject: mon/Elector: bootstrap on timeout X-Git-Tag: v0.78~168^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cf4f7027e7a05090d3d1c14f2ac4db73bf1d8fa4;p=ceph.git mon/Elector: bootstrap on timeout 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 --- diff --git a/src/mon/Elector.cc b/src/mon/Elector.cc index 511d71411d96f..3572c8b48c15a 100644 --- a/src/mon/Elector.cc +++ b/src/mon/Elector.cc @@ -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(); } }