diff --git a/extra/dist/dist.lua b/extra/dist/dist.lua index 533bef8d9d2b3c4755d57fdbcc9ddb85b405928c..975251ef91d5135de093cad13499b6d46ba55852 100755 --- a/extra/dist/dist.lua +++ b/extra/dist/dist.lua @@ -7,6 +7,7 @@ local DEFAULT_CFG = { XLOGS = '/var/lib/tarantool', LOGS = '/var/log/tarantool', USERNAME = 'tarantool', + INSTDIR = '/etc/tarantool/instances.enabled', } if os.getenv('TARANTOOL_DEFAULTS') ~= nil then @@ -83,7 +84,7 @@ function read_cfg(name) end if arg[1] == nil or arg[2] == nil then - log.error("Usage: dist.lua {start|stop} user_script.lua [ ... ]") + log.error("Usage: dist.lua {start|stop|logrotate} instance") os.exit(-1) end @@ -97,7 +98,7 @@ end local function mkdir(dirname) log.info("mkdir %s", dirname) - if not fio.mkdir(dirname, tonumber('0750', 8)) then + if not fio.mkdir(dirname, 0x1C0) then log.error("Can't mkdir %s: %s", dirname, errno.strerror()) os.exit(-1) end @@ -109,7 +110,8 @@ local function mkdir(dirname) end local cmd = arg[1] -local main_lua = arg[2] +local instance = fio.basename(arg[2], '.lua') +local main_lua = fio.pathjoin(cfg.INSTDIR, instance .. '.lua') for i = 0, 128 do arg[i] = arg[i + 2] if arg[i] == nil then @@ -117,13 +119,11 @@ for i = 0, 128 do end end -local instance = fio.basename(main_lua, '.lua') - local force_cfg = { pid_file = fio.pathjoin(cfg.PIDS, instance .. '.pid'), wal_dir = fio.pathjoin(cfg.XLOGS, instance), - snap_dir = fio.pathjoin(cfg.SNAPS, instance), work_dir = fio.pathjoin(cfg.XLOGS, instance), + snap_dir = fio.pathjoin(cfg.SNAPS, instance), username = cfg.USERNAME, logger = fio.pathjoin(cfg.LOGS, instance .. '.log'), console = fio.pathjoin(cfg.PIDS, instance .. '.control'), @@ -194,14 +194,14 @@ elseif cmd == 'stop' then elseif cmd == 'logrotate' then if fio.stat(force_cfg.console) == nil then - log.error("Process is not running (pid: %s)", force_cfg.pid_file) - os.exit(-1) + -- process is not running, do nothing + os.exit(0) end local s = socket.tcp_connect('unix/', force_cfg.console) if s == nil then - log.error("Can't connect to %s: %s", - force_cfg.console, errno.strerror()) + -- socket is not opened, do nothing + os.exit(0) end s:write[[ @@ -209,7 +209,9 @@ elseif cmd == 'logrotate' then require('log').info("Rotate log file") ]] - os.exit(-1) + s:read({ '[.][.][.]' }, 2) + + os.exit(0) else log.error("Unknown command '%s'", cmd) os.exit(-1)