dout(10) << " got newer/committed monmap epoch " << newmap->get_epoch()
<< ", mine was " << monmap->get_epoch() << dendl;
int epoch_diff = newmap->get_epoch() - monmap->get_epoch();
+ dout(20) << " new monmap is " << *newmap << dendl;
delete newmap;
monmap->decode(m->monmap_bl);
dout(20) << "has_ever_joined: " << has_ever_joined << dendl;
&auth_meta->connection_secret,
&auth_meta->authorizer_challenge);
if (isvalid) {
- ms_handle_authentication(con);
+ ms_handle_fast_authentication(con);
return 1;
}
if (!more && !was_challenge && auth_meta->authorizer_challenge) {
}
if (r > 0 &&
!s->authenticated) {
- ms_handle_authentication(con);
+ ms_handle_fast_authentication(con);
}
dout(30) << " r " << r << " reply:\n";
}
}
-int Monitor::ms_handle_authentication(Connection *con)
+int Monitor::ms_handle_fast_authentication(Connection *con)
{
if (con->get_peer_type() == CEPH_ENTITY_TYPE_MON) {
// mon <-> mon connections need no Session, and setting one up
void Monitor::set_elector_disallowed_leaders(bool allow_election)
{
set<int> dl;
+ // inherit dl from monmap
for (auto name : monmap->disallowed_leaders) {
dl.insert(monmap->get_rank(name));
- }
- if (is_stretch_mode()) {
- for (auto name : monmap->stretch_marked_down_mons) {
- dl.insert(monmap->get_rank(name));
- }
- dl.insert(monmap->get_rank(monmap->tiebreaker_mon));
+ } // unconditionally add stretch_marked_down_mons to the new dl copy
+ for (auto name : monmap->stretch_marked_down_mons) {
+ dl.insert(monmap->get_rank(name));
+ } // add the tiebreaker_mon incase it is not in monmap->disallowed_leaders
+ if (!monmap->tiebreaker_mon.empty() &&
+ monmap->contains(monmap->tiebreaker_mon)) {
+ dl.insert(monmap->get_rank(monmap->tiebreaker_mon));
}
bool disallowed_changed = elector.set_disallowed_leaders(dl);