When choosing a random OSD to send a message to, verify not only that
the OSD id is up but that the session is for the same instance of that OSD
by checking that the address matches.
Fixes: #7093
Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit
98ed9ac5fed6eddf68f163086df72faabd9edcde)
bool backward = true, forward = true;
while (backward || forward) {
if (backward) {
- if (osdmap->is_up(b->first)) {
+ if (osdmap->is_up(b->first) &&
+ osdmap->get_addr(b->first) == b->second->con->get_peer_addr()) {
s = b->second;
break;
}