'thrash_map' is only set if we are the leader, so we would thrash and
propose the pending value if we are the leader. However, we should keep
the 'is_leader()' check not only for clarity's sake (an unfamiliar reader
may cry OMGBUG, prompting to a patch much like this), but also because
we may lose a subsequent election and become a peon instead, while still
holding a 'thrash_map' value > 0 -- and we really don't want to propose
while being a peon.
[This is a rebased version of
5eac38797d9eb5a59fcff1d81571cff7a2f10e66,
complete with the typo fix in
d656aed599ee754646e16386ce5a4ab0117f2d6e.]
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
{
update_logger();
- if (thrash_map && thrash())
- propose_pending();
+ if (thrash_map) {
+ if (mon->is_leader()) {
+ if (thrash())
+ propose_pending();
+ } else {
+ thrash_map = 0;
+ }
+ }
if (mon->is_leader())
mon->clog.info() << "osdmap " << osdmap << "\n";