From: Greg Farnum Date: Fri, 14 Sep 2018 17:58:49 +0000 (-0700) Subject: msg/async: clean up local buffers on dispatch X-Git-Tag: v14.0.1~261^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=47ed036753223c44c7bf66c64d4a4adfe7267c0a;p=ceph.git msg/async: clean up local buffers on dispatch The AsyncConnection keeps local (member variable) bufferlists of incoming messages before they're placed into the Message's front/data/middle buffers. Previously these were reset only when a new Message is being received, which means in steady state we store a full Message for every Connection even if it's inactive! Instead we obviously want to drop our local references to Message state once it's been dispatched, so that it can go away. Fixes: http://tracker.ceph.com/issues/35987 Signed-off-by: Greg Farnum --- diff --git a/src/msg/async/AsyncConnection.cc b/src/msg/async/AsyncConnection.cc index 933994e27da0d..03bd542d4a43a 100644 --- a/src/msg/async/AsyncConnection.cc +++ b/src/msg/async/AsyncConnection.cc @@ -787,6 +787,12 @@ void AsyncConnection::process() dispatch_queue->enqueue(message, message->get_priority(), conn_id); } + // clean up local buffer references + data_buf.clear(); + front.clear(); + middle.clear(); + data.clear(); + break; }