From: Aishwarya Mathuria Date: Fri, 4 Jul 2025 06:37:45 +0000 (+0000) Subject: crimson/tools: remove usage of deprecated function at_exit() X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7107c3283acb0097abae92c11eb962adc0bcbfd4;p=ceph.git crimson/tools: remove usage of deprecated function at_exit() at_exit() is now deprecated, in place of that we will explicitly call stop() for the sharded objects. Signed-off-by: Aishwarya Mathuria --- diff --git a/src/crimson/tools/perf_crimson_msgr.cc b/src/crimson/tools/perf_crimson_msgr.cc index d2682a3440c..cabd685e375 100644 --- a/src/crimson/tools/perf_crimson_msgr.cc +++ b/src/crimson/tools/perf_crimson_msgr.cc @@ -44,15 +44,16 @@ seastar::logger& logger() { return crimson::get_logger(ceph_subsys_ms); } +template +static std::list>> sharded_objects; + template seastar::future create_sharded(Args... args) { // seems we should only construct/stop shards on #0 return seastar::smp::submit_to(0, [=] { auto sharded_obj = seastar::make_lw_shared>(); + sharded_objects.push_back(sharded_obj); return sharded_obj->start(args...).then([sharded_obj]() { - seastar::engine().at_exit([sharded_obj]() { - return sharded_obj->stop().then([sharded_obj] {}); - }); return sharded_obj.get(); }); }).then([] (seastar::sharded *ptr_shard) { @@ -1167,8 +1168,23 @@ static seastar::future<> run( }); } }).finally([] { - return crimson::common::sharded_conf().stop(); + return seastar::smp::submit_to(0, [] { + return seastar::do_for_each(sharded_objects, + [](auto& sharded_obj) { + return sharded_obj->stop(); + }).then([] { + return seastar::do_for_each(sharded_objects, + [](auto& sharded_obj) { + return sharded_obj->stop(); + }); + }); + }).then([] { + sharded_objects.clear(); + sharded_objects.clear(); + return crimson::common::sharded_conf().stop(); + }); }); + } }