From: Adam C. Emerson Date: Tue, 7 Apr 2026 07:06:53 +0000 (-0400) Subject: rgw: Fix name and add operators for io_context holder X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3a099061cff4223a9291d394719cc57fafa6654b;p=ceph.git rgw: Fix name and add operators for io_context holder This is essentially a special case of an optional and it should act like one. I asked the original author to updated it but they didn't want to, so I did it myself. Fixes: https://tracker.ceph.com/issues/76094 Signed-off-by: Adam C. Emerson --- diff --git a/src/rgw/rgw_appmain.cc b/src/rgw/rgw_appmain.cc index b0ed595a244..cc0322a9f69 100644 --- a/src/rgw/rgw_appmain.cc +++ b/src/rgw/rgw_appmain.cc @@ -95,7 +95,7 @@ namespace { OpsLogFile* rgw::AppMain::ops_log_file; -rgw::AppMain::AppMain(const DoutPrefixProvider* dpp) : dpp(dpp), context_pool_holder(dpp) {} +rgw::AppMain::AppMain(const DoutPrefixProvider* dpp) : dpp(dpp), context_pool(dpp) {} rgw::AppMain::~AppMain() = default; void rgw::AppMain::init_frontends1(bool nfs) @@ -239,7 +239,7 @@ int rgw::AppMain::init_storage() DriverManager::Config cfg = DriverManager::get_config(false, g_ceph_context); env.driver = DriverManager::get_storage(dpp, dpp->get_cct(), cfg, - context_pool_holder.get(), + *context_pool, site, run_gc, run_lc, @@ -463,11 +463,11 @@ int rgw::AppMain::init_frontends2(RGWLib* rgwlib) fe = new RGWLoadGenFrontend(env, config); } else if (framework == "beast") { - fe = new RGWAsioFrontend(env, config, *sched_ctx, context_pool_holder.get()); + fe = new RGWAsioFrontend(env, config, *sched_ctx, *context_pool); if (g_conf()->rgw_crypt_s3_kms_cache_enabled) { env.kms_cache->initialize_ttl_reaper( g_conf()->rgw_beast_enable_async - ? std::optional(context_pool_holder.get().get_executor()) + ? std::optional(context_pool->get_executor()) : nullopt); } } @@ -539,7 +539,7 @@ int rgw::AppMain::init_frontends2(RGWLib* rgwlib) rgw_pauser->add_pauser(dedup_background.get()); } reloader = std::make_unique( - env, *implicit_tenant_context, service_map_meta, rgw_pauser.get(), context_pool_holder.get()); + env, *implicit_tenant_context, service_map_meta, rgw_pauser.get(), *context_pool); realm_watcher->add_watcher(RGWRealmNotify::Reload, *reloader); } } @@ -657,7 +657,7 @@ void rgw::AppMain::shutdown(std::function finalize_async_signals) env.driver->shutdown(); // Do this before closing storage so requests don't try to call into // closed storage. - context_pool_holder.get().finish(); + context_pool->finish(); cfgstore.reset(); // deletes DriverManager::close_storage(env.driver); diff --git a/src/rgw/rgw_main.h b/src/rgw/rgw_main.h index 66f4c932af7..d30e7b86609 100644 --- a/src/rgw/rgw_main.h +++ b/src/rgw/rgw_main.h @@ -106,9 +106,11 @@ class AppMain { IOContextPoolHolder& operator=(const IOContextPoolHolder&) = delete; ceph::async::io_context_pool& get(); + ceph::async::io_context_pool& operator*() { return get(); } + ceph::async::io_context_pool* operator->() { return std::addressof(get()); } }; - IOContextPoolHolder context_pool_holder; + IOContextPoolHolder context_pool; public: AppMain(const DoutPrefixProvider* dpp); ~AppMain();