]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: pass new maps to dead osds via existing Connection
authorSage Weil <sage@inktank.com>
Fri, 25 Jan 2013 17:27:00 +0000 (09:27 -0800)
committerSage Weil <sage@inktank.com>
Fri, 25 Jan 2013 17:38:36 +0000 (09:38 -0800)
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>
src/osd/OSD.cc

index 5df64c45a6e4c030c4683a6436591a55b5098a57..0e7de0d980107dd3532f20349a95f2f48cc3e5d4 100644 (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;
     }
   }