]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/net: clear FrameAssemblerV2 at replace
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 26 Apr 2023 09:37:16 +0000 (17:37 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Wed, 11 Oct 2023 11:38:31 +0000 (11:38 +0000)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
(cherry picked from commit 51636d9954cbbc8c34ed5f0a275ccc08d9899cf1)

src/crimson/net/FrameAssemblerV2.cc
src/crimson/net/FrameAssemblerV2.h

index a043fcc57171e9fd27225644bcce0ff43675768d..f76f67740546d48e210da5947f92a6376f2fa31d 100644 (file)
@@ -92,6 +92,9 @@ FrameAssemblerV2::to_replace()
 {
   assert(seastar::this_shard_id() == sid);
   assert(is_socket_valid());
+
+  clear();
+
   return mover_t{
       move_socket(),
       std::move(session_stream_handlers),
@@ -101,9 +104,9 @@ FrameAssemblerV2::to_replace()
 seastar::future<> FrameAssemblerV2::replace_by(FrameAssemblerV2::mover_t &&mover)
 {
   assert(seastar::this_shard_id() == sid);
-  record_io = false;
-  rxbuf.clear();
-  txbuf.clear();
+
+  clear();
+
   session_stream_handlers = std::move(mover.session_stream_handlers);
   session_comp_handlers = std::move(mover.session_comp_handlers);
   if (has_socket()) {
@@ -437,4 +440,13 @@ FrameAssemblerV2Ref FrameAssemblerV2::create(SocketConnection &conn)
   return std::make_unique<FrameAssemblerV2>(conn);
 }
 
+void FrameAssemblerV2::clear()
+{
+  record_io = false;
+  rxbuf.clear();
+  txbuf.clear();
+  rx_preamble.clear();
+  rx_segments_data.clear();
+}
+
 } // namespace crimson::net
index c2d3318f87d6243e96fb410cf2ab97af00e619f1..a4494384ab10793da6b8742c5d0b8a0fc1338adb 100644 (file)
@@ -141,6 +141,8 @@ private:
 
   SocketFRef move_socket();
 
+  void clear();
+
   void log_main_preamble(const ceph::bufferlist &bl);
 
 #ifdef UNIT_TESTS_BUILT