summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-07-18 15:02:02 -0700
committerSage Weil <sage@inktank.com>2013-07-18 15:02:02 -0700
commitd3748b23a2905be0e7eb89d8594ed5e48c0096df (patch)
treeff5f44812e37f19a10977dcec9ebda1ef3db53d4
parent2428bfd618e85d04d83106e9cd02f3664c471892 (diff)
downloadceph-d3748b23a2905be0e7eb89d8594ed5e48c0096df.tar.gz
osd: break con <-> session cycle when marking down old peers
Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/osd/OSD.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index d031ddd16fc..a970aa144da 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -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;
}
}