summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-07-19 16:36:01 -0700
committerSage Weil <sage@inktank.com>2013-07-19 16:39:49 -0700
commit8371680bab780933944dffd02246c73b17d6d930 (patch)
treed5216ca3b7adf40ce80505333003bfcc07652c53
parente4f2e3ecd0aee8f30005f915595271c5ae2149cb (diff)
downloadceph-8371680bab780933944dffd02246c73b17d6d930.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. [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>
-rw-r--r--src/mon/OSDMonitor.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc
index 82ff36d8469..c41a59fa148 100644
--- a/src/mon/OSDMonitor.cc
+++ b/src/mon/OSDMonitor.cc
@@ -297,8 +297,14 @@ void OSDMonitor::on_active()
{
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";