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)
victory();
} else {
// whoever i deferred to didn't declare victory quickly enough.
- start();
+ if (mon->has_ever_joined)
+ start();
+ else
+ mon->bootstrap();
}
}