diff options
author | Joao Eduardo Luis <joao.luis@inktank.com> | 2013-07-16 23:02:55 +0100 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-07-16 15:08:10 -0700 |
commit | 5eac38797d9eb5a59fcff1d81571cff7a2f10e66 (patch) | |
tree | 367a3835cda710d5cb8baf76d0c9bad925594318 | |
parent | b19ec576e6f1030b726a8087d576160a68677f65 (diff) | |
download | ceph-5eac38797d9eb5a59fcff1d81571cff7a2f10e66.tar.gz |
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>
-rw-r--r-- | src/mon/OSDMonitor.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 2b4de6d426d..eb674b7bc4c 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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"; |