]> git-server-git.apps.pok.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>
Tue, 5 Feb 2013 06:06:12 +0000 (22:06 -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>
(cherry picked from commit 1bc419a7affb056540ba8f9b332b6ff9380b37af)

src/osd/OSD.cc

index a8925b5b3d72d4dd4c99aa455fe176453a8309f4..bff9b6901e9424902eea102c0c5aba21e6bf6719 100644 (file)
@@ -4541,13 +4541,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;
     }
   }