This ensures that get_random_osd_session behaves when it does
int n = by_osd.rbegin()->first + 1;
int r = rand() % n;
Fixes: https://tracker.ceph.com/issues/43552
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit
d6f0642b82c5a1caa37b839bc8380aeb0c532143)
Conflicts:
src/mon/Session.h
}
s->sub_map.clear();
s->item.remove_myself();
- if (s->name.is_osd()) {
+ if (s->name.is_osd() &&
+ s->name.num() >= 0) {
for (multimap<int,MonSession*>::iterator p = by_osd.find(s->name.num());
p->first == s->name.num();
++p)
void add_session(MonSession *s) {
sessions.push_back(&s->item);
s->get();
- if (s->name.is_osd()) {
+ if (s->name.is_osd() &&
+ s->name.num() >= 0) {
by_osd.insert(pair<int,MonSession*>(s->name.num(), s));
}
if (s->con_features) {