]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: break con <-> session cycle when marking down old peers
authorSage Weil <sage@inktank.com>
Thu, 18 Jul 2013 22:02:02 +0000 (15:02 -0700)
committerSage Weil <sage@inktank.com>
Thu, 18 Jul 2013 22:02:02 +0000 (15:02 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
src/osd/OSD.cc

index d031ddd16fc2ce5ec6e8402b3fa7e5cd113f7dbc..a970aa144da06b5a0a8022b830e009944a3bc447 100644 (file)
@@ -5574,7 +5574,9 @@ bool OSD::require_same_or_newer_map(OpRequestRef op, epoch_t epoch)
              << " msg was " << m->get_source_inst().addr
              << " expected " << (osdmap->have_inst(from) ? osdmap->get_cluster_addr(from) : entity_addr_t())
              << dendl;
-      cluster_messenger->mark_down(m->get_connection());
+      ConnectionRef con = m->get_connection();
+      con->set_priv(NULL);   // break ref <-> session cycle, if any
+      cluster_messenger->mark_down(con.get());
       return false;
     }
   }