From mboxrd@z Thu Jan 1 00:00:00 1970 From: Noah Watkins Subject: Re: Client receives 'connection refused' only after heavy use Date: Thu, 08 Dec 2011 16:40:08 -0800 Message-ID: <4EE158E8.8030603@cs.ucsc.edu> References: <4EDC0ECF.60805@cs.ucsc.edu> <4EDC1853.5080405@cs.ucsc.edu> <4EDD1437.4030608@cs.ucsc.edu> <4EDD15EC.1000900@cs.ucsc.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mail-01.cse.ucsc.edu ([128.114.48.32]:36057 "EHLO mail-01.cse.ucsc.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752794Ab1LIAkT (ORCPT ); Thu, 8 Dec 2011 19:40:19 -0500 In-Reply-To: Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Gregory Farnum Cc: Noah Watkins , ceph-devel@vger.kernel.org This patch appears to be working well! Thanks, Noah On 12/07/2011 02:33 PM, Gregory Farnum wrote: > Noah: > Branch wip-messenger contains the patch you want (plus one or two > cleanups), or apply the below. Should handle it, although I'd like to > do a more thorough cleanup of this problem at a later time. > -Greg > > From 8c4f4748e8b683f5b4ea939295793421c0ab7b61 Mon Sep 17 00:00:00 2001 > From: Greg Farnum > Date: Wed, 7 Dec 2011 14:19:23 -0800 > Subject: [PATCH] mds: mark_disposable when closing a Client connection. > > This is causing issues since the Client's ack of the MClientSession > is somehow not getting back to the MDS. We should make the > Client/SimpleMessenger be better-behaved about shutdown, but for > now this solution matches how we're working elsewhere in our codebase. > > Signed-off-by: Greg Farnum > --- > src/mds/Server.cc | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/src/mds/Server.cc b/src/mds/Server.cc > index a9ef64f..d44bd7e 100644 > --- a/src/mds/Server.cc > +++ b/src/mds/Server.cc > @@ -289,6 +289,7 @@ void Server::_session_logged(Session *session, > uint64_t state_seq, bool open, ve > // reset session > mds->send_message_client(new > MClientSession(CEPH_SESSION_CLOSE), session); > mds->sessionmap.set_state(session, Session::STATE_CLOSED); > + mds->messenger->mark_disposable(session->connection); > session->clear(); > } else if (session->is_killing()) { > // destroy session, close connection >