From 9a45a0bb635c2fe2b86db4d0726eec31580a6ad9 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Wed, 19 Jun 2024 17:24:27 +0800 Subject: [PATCH] crimson/net/Messenger: add the "mark_down" interface Signed-off-by: Xuehan Xu --- src/crimson/net/Messenger.h | 2 ++ src/crimson/net/SocketMessenger.h | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/crimson/net/Messenger.h b/src/crimson/net/Messenger.h index 74df062d8de07..0fa5e73841d86 100644 --- a/src/crimson/net/Messenger.h +++ b/src/crimson/net/Messenger.h @@ -57,6 +57,8 @@ public: virtual void set_auth_server(crimson::auth::AuthServer *) = 0; + virtual seastar::future<> mark_down(const entity_addr_t &addr) = 0; + using bind_ertr = crimson::errorator< crimson::ct_error::address_in_use, // The address (range) is already bound crimson::ct_error::address_not_available diff --git a/src/crimson/net/SocketMessenger.h b/src/crimson/net/SocketMessenger.h index e4ac631846df7..490e6eaa0d84b 100644 --- a/src/crimson/net/SocketMessenger.h +++ b/src/crimson/net/SocketMessenger.h @@ -152,6 +152,18 @@ public: Interceptor *interceptor = nullptr; #endif + seastar::future<> mark_down(const entity_addr_t& a) final { + auto conn = lookup_conn(a); + if (conn) { + return seastar::smp::submit_to( + conn->get_shard_id(), + [conn=conn.get()] { + conn->mark_down(); + return seastar::now(); + }).then([conn] { return seastar::now(); }); + } + return seastar::now(); + } private: seastar::future<> accept(SocketFRef &&, const entity_addr_t &); -- 2.39.5