diff --git a/src/main.rs b/src/main.rs index e99f55fb9e7ec08c9aace94841b9259c076faf18..0cb3d23b7fed704a629bd81469ab2952e4f475ad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -349,7 +349,7 @@ fn picolib_setup(args: &args::Run) { ); } -fn init_vshard() { +fn preload_vshard() { let lua = ::tarantool::lua_state(); macro_rules! preload { @@ -382,8 +382,6 @@ fn init_vshard() { preload!("vshard.storage.sched", "vshard/storage/sched.lua"); preload!("vshard.util", "vshard/util.lua"); preload!("vshard.version", "vshard/version.lua"); - - lua.exec("vshard = require 'vshard'").unwrap(); } fn init_handlers() { @@ -616,7 +614,7 @@ fn init_common(args: &args::Run, cfg: &tarantool::Cfg) -> Storage { std::fs::create_dir_all(&args.data_dir).unwrap(); tarantool::set_cfg(cfg); - init_vshard(); + preload_vshard(); init_handlers(); traft::event::init(); Storage::new().expect("Storage initialization failed") diff --git a/src/traft/rpc/sharding.rs b/src/traft/rpc/sharding.rs index 18659f245e5981ae918a75ae73ab4347c1e7ec63..ea14944296e2166308360dd4266370b4ab43809b 100644 --- a/src/traft/rpc/sharding.rs +++ b/src/traft/rpc/sharding.rs @@ -18,11 +18,19 @@ fn proc_sharding(req: Request) -> Result<Response, Error> { // TODO: fix user's permissions lua.exec("box.session.su('admin')")?; // TODO: only done on instances with corresponding roles - lua.exec_with("vshard.storage.cfg(..., box.info.uuid)", &cfg) - .map_err(tlua::LuaError::from)?; + lua.exec_with( + "vshard = require('vshard') + vshard.storage.cfg(..., box.info.uuid)", + &cfg, + ) + .map_err(tlua::LuaError::from)?; // TODO: only done on instances with corresponding roles - lua.exec_with("vshard.router.cfg(...)", &cfg) - .map_err(tlua::LuaError::from)?; + lua.exec_with( + "vshard = require('vshard') + vshard.router.cfg(...)", + &cfg, + ) + .map_err(tlua::LuaError::from)?; if req.bootstrap { lua.exec("vshard.router.bootstrap()")?;