]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw/lua: Add rgw config to enable/disable lua.
authorkchheda3 <kchheda3@bloomberg.net>
Fri, 24 Jan 2025 18:51:29 +0000 (13:51 -0500)
committerkchheda3 <kchheda3@bloomberg.net>
Wed, 29 Jan 2025 21:04:09 +0000 (16:04 -0500)
Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
src/common/options/rgw.yaml.in
src/rgw/rgw_appmain.cc
src/rgw/rgw_realm_reloader.cc

index 663b51ab26aea0bcdf7e3424694e6711f967044a..a316f21c5ea192fc15cdbe7535e8770200fb6701 100644 (file)
@@ -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
index 8273ac1c96b043401fac7d602824931faab833a1..2a04ff4ec95d5140740662ed39ff8442d49234fa 100644 (file)
@@ -551,6 +551,8 @@ void rgw::AppMain::init_tracepoints()
 
 void rgw::AppMain::init_lua()
 {
+  if (!g_conf().get_val<bool>("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<void(void)> finalize_async_signals)
 {
   if (env.driver->get_name() == "rados") {
     reloader.reset(); // stop the realm reloader
-    static_cast<rgw::sal::RadosLuaManager*>(env.lua.manager.get())->unwatch_reload(dpp);
+    if (g_conf().get_val<bool>("rgw_lua_enable"))
+      static_cast<rgw::sal::RadosLuaManager*>(env.lua.manager.get())->
+          unwatch_reload(dpp);
   }
 
   for (auto& fe : fes) {
index d425793a3fa47d3319d8a45313130ca88d3d7c80..e975ee66abf2291f0e4c352e41acee748d4acd1e 100644 (file)
@@ -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;