osd: pass new maps to dead osds via existing Connection

Previously we were sending these maps to dead osds via their old addrs
using a new outgoing connection and setting the flags so that the msgr
would clean up.  That mechanism is possibly buggy and fragile, and we can
avoid it entirely if we just reuse the existing heartbeat Connection.

Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
Sage Weil 2013-01-25 09:27:00 -08:00
parent 76705ace2e
commit 1bc419a7af

View File

@ -4683,13 +4683,7 @@ bool OSD::require_same_or_newer_map(OpRequestRef op, epoch_t epoch)
if (!osdmap->have_inst(from) ||
osdmap->get_cluster_addr(from) != m->get_source_inst().addr) {
dout(0) << "from dead osd." << from << ", dropping, sharing map" << dendl;
send_incremental_map(epoch, m->get_source_inst(), true);
// close after we send the map; don't reconnect
Connection *con = m->get_connection();
cluster_messenger->mark_down_on_empty(con);
cluster_messenger->mark_disposable(con);
send_incremental_map(epoch, m->get_connection());
return false;
}
}