mon: OSDMonitor: only thrash and propose if we are the leader

'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.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
This commit is contained in:
Joao Eduardo Luis 2013-07-16 23:02:55 +01:00 committed by Sage Weil
parent b19ec576e6
commit 5eac38797d

View File

@ -297,8 +297,14 @@ void OSDMonitor::on_active()
send_to_waiting();
check_subs();
if (thrash_map && thrash())
propose_pending();
if (thrash_map) {
if (is_leader()) {
if (thrash())
propose_pending();
} else {
thrash_map = 0;
}
}
if (mon->is_leader())
mon->clog.info() << "osdmap " << osdmap << "\n";