From: Yingxin Cheng Date: Wed, 26 Apr 2023 09:37:16 +0000 (+0800) Subject: crimson/net: clear FrameAssemblerV2 at replace X-Git-Tag: v18.2.1~166^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=45cc67cd5eb447d4ee14d151a22f3ea107b9cd1e;p=ceph.git crimson/net: clear FrameAssemblerV2 at replace Signed-off-by: Yingxin Cheng (cherry picked from commit 51636d9954cbbc8c34ed5f0a275ccc08d9899cf1) --- diff --git a/src/crimson/net/FrameAssemblerV2.cc b/src/crimson/net/FrameAssemblerV2.cc index a043fcc57171..f76f67740546 100644 --- a/src/crimson/net/FrameAssemblerV2.cc +++ b/src/crimson/net/FrameAssemblerV2.cc @@ -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(conn); } +void FrameAssemblerV2::clear() +{ + record_io = false; + rxbuf.clear(); + txbuf.clear(); + rx_preamble.clear(); + rx_segments_data.clear(); +} + } // namespace crimson::net diff --git a/src/crimson/net/FrameAssemblerV2.h b/src/crimson/net/FrameAssemblerV2.h index c2d3318f87d6..a4494384ab10 100644 --- a/src/crimson/net/FrameAssemblerV2.h +++ b/src/crimson/net/FrameAssemblerV2.h @@ -141,6 +141,8 @@ private: SocketFRef move_socket(); + void clear(); + void log_main_preamble(const ceph::bufferlist &bl); #ifdef UNIT_TESTS_BUILT