From: kchheda3 Date: Fri, 24 Jan 2025 18:51:29 +0000 (-0500) Subject: rgw/lua: Add rgw config to enable/disable lua. X-Git-Tag: v20.0.0~35^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=531bd3703777cc856d9bb60257163849965e5093;p=ceph.git rgw/lua: Add rgw config to enable/disable lua. Signed-off-by: kchheda3 --- diff --git a/src/common/options/rgw.yaml.in b/src/common/options/rgw.yaml.in index 663b51ab26ae..a316f21c5ea1 100644 --- a/src/common/options/rgw.yaml.in +++ b/src/common/options/rgw.yaml.in @@ -4271,3 +4271,14 @@ options: services: - rgw with_legacy: true +- name: rgw_lua_enable + type: bool + level: advanced + desc: Enable lua scripting. + default: true + services: + - rgw + flags: + - startup + see_also: + with_legacy: true \ No newline at end of file diff --git a/src/rgw/rgw_appmain.cc b/src/rgw/rgw_appmain.cc index 8273ac1c96b0..2a04ff4ec95d 100644 --- a/src/rgw/rgw_appmain.cc +++ b/src/rgw/rgw_appmain.cc @@ -551,6 +551,8 @@ void rgw::AppMain::init_tracepoints() void rgw::AppMain::init_lua() { + if (!g_conf().get_val("rgw_lua_enable")) + return; rgw::sal::Driver* driver = env.driver; int r{0}; std::string install_dir; @@ -583,7 +585,9 @@ void rgw::AppMain::shutdown(std::function finalize_async_signals) { if (env.driver->get_name() == "rados") { reloader.reset(); // stop the realm reloader - static_cast(env.lua.manager.get())->unwatch_reload(dpp); + if (g_conf().get_val("rgw_lua_enable")) + static_cast(env.lua.manager.get())-> + unwatch_reload(dpp); } for (auto& fe : fes) { diff --git a/src/rgw/rgw_realm_reloader.cc b/src/rgw/rgw_realm_reloader.cc index d425793a3fa4..e975ee66abf2 100644 --- a/src/rgw/rgw_realm_reloader.cc +++ b/src/rgw/rgw_realm_reloader.cc @@ -186,9 +186,12 @@ void RGWRealmReloader::reload() * the dynamic reconfiguration. */ env.auth_registry = rgw::auth::StrategyRegistry::create( cct, implicit_tenants, env.driver); - env.lua.manager = env.driver->get_lua_manager(env.lua.manager->luarocks_path()); - if (env.lua.background) { - env.lua.background->set_manager(env.lua.manager.get()); + if (env.lua.manager.get()) { + env.lua.manager = env.driver->get_lua_manager( + env.lua.manager->luarocks_path()); + if (env.lua.background) { + env.lua.background->set_manager(env.lua.manager.get()); + } } ldpp_dout(&dp, 1) << "Resuming frontends with new realm configuration." << dendl;