From b7273450df6dfca08e47694d9b74837a5753f58d Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 15 Jan 2019 10:42:18 -0600 Subject: [PATCH] mon: make bootstrap rank check more robust If we search for myaddrs, then we will detect our rank properly if we were [a,b] and the a addr got removed. Signed-off-by: Sage Weil --- src/mon/MonMap.h | 15 +++++++++++---- src/mon/Monitor.cc | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/mon/MonMap.h b/src/mon/MonMap.h index 5a852807ddb..f5a230c7129 100644 --- a/src/mon/MonMap.h +++ b/src/mon/MonMap.h @@ -327,10 +327,17 @@ public: } int get_rank(const entity_addr_t& a) const { string n = get_name(a); - if (n.empty()) - return -1; - - return get_rank(n); + if (!n.empty()) { + return get_rank(n); + } + return -1; + } + int get_rank(const entity_addrvec_t& av) const { + string n = get_name(av); + if (!n.empty()) { + return get_rank(n); + } + return -1; } bool get_addr_name(const entity_addr_t& a, string& name) { if (addr_mons.count(a) == 0) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 793e037bc3d..71a0b0e5b10 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -1086,7 +1086,7 @@ void Monitor::bootstrap() dout(10) << "monmap " << *monmap << dendl; // note my rank - int newrank = monmap->get_rank(messenger->get_myaddr()); + int newrank = monmap->get_rank(messenger->get_myaddrs()); if (newrank < 0 && rank >= 0) { // was i ever part of the quorum? if (has_ever_joined) { -- 2.39.5