From: Sage Weil Date: Sat, 8 Jun 2013 15:07:45 +0000 (-0700) Subject: osdc/Objecter: clear osd session command ops xlist on close X-Git-Tag: v0.65~123 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=10bfa8350c60261057ac8c8bcb70495574233739;p=ceph.git osdc/Objecter: clear osd session command ops xlist on close Clear the command ops list, just as we do the ops and linger_ops xlists. This fixes a crash like this on shutdown: 2013-06-07 23:06:21.089275 7fc7e8655700 10 client.4124.objecter close_session for osd.0 2013-06-07 23:06:21.089279 7fc7e8655700 1 -- 10.3.64.22:0/1026843 mark_down 0x7fc7e0001260 -- 0x7fc7e0001000 ./include/xlist.h: In function 'xlist::~xlist() [with T = Objecter::CommandOp*]' thread 7fc7e8655700 time 2013-06-07 23:06:21.089401 ./include/xlist.h: 69: FAILED assert(_size == 0) ceph version 0.63-553-ge8300d0 (e8300d0afb5154d4d13536abdcf47bd5cc8ce810) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x80) [0x7fc7ec111f14] 2: (xlist::~xlist()+0x36) [0x7fc7ec09f95e] 3: (Objecter::OSDSession::~OSDSession()+0x1d) [0x7fc7ec09e451] 4: (Objecter::close_session(Objecter::OSDSession*)+0x1fc) [0x7fc7ec08a146] 5: (Objecter::handle_osd_map(MOSDMap*)+0xe68) [0x7fc7ec087864] 6: (librados::RadosClient::_dispatch(Message*)+0x84) [0x7fc7ec0615f0] 7: (librados::RadosClient::ms_dispatch(Message*)+0x16b) [0x7fc7ec0613c1] 8: (Messenger::ms_deliver_dispatch(Message*)+0x8c) [0x7fc7ec21d0f6] 9: (DispatchQueue::entry()+0x52f) [0x7fc7ec21c653] 10: (DispatchQueue::DispatchThread::entry()+0x1c) [0x7fc7ec2bdcc2] 11: (Thread::_entry_func(void*)+0x23) [0x7fc7ec34d8cd] 12: (()+0x6b50) [0x7fc7eb2feb50] 13: (clone()+0x6d) [0x7fc7eab2c6dd] Signed-off-by: Sage Weil --- diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 1bd5d90c8f2e..7a4d1dbbd483 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -933,6 +933,7 @@ void Objecter::close_session(OSDSession *s) } s->ops.clear(); s->linger_ops.clear(); + s->command_ops.clear(); osd_sessions.erase(s->osd); delete s;