]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: clean up local buffers on dispatch 24387/head
authorGreg Farnum <gfarnum@redhat.com>
Fri, 14 Sep 2018 17:58:49 +0000 (10:58 -0700)
committerPrashant D <pdhange@redhat.com>
Tue, 2 Oct 2018 22:34:52 +0000 (18:34 -0400)
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 <gfarnum@redhat.com>
(cherry picked from commit 47ed036753223c44c7bf66c64d4a4adfe7267c0a)

src/msg/async/AsyncConnection.cc

index 1ab76ab790de2c06b6ad2b1a1af55d69f966d371..ea03f869074089d7a1d9d88bae2353ca3b79ed3d 100644 (file)
@@ -798,6 +798,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;
         }