diff options
author | Kim Alvefur <zash@zash.se> | 2023-01-22 14:45:47 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2023-01-22 14:45:47 +0100 |
commit | 435e008568a0590f89e3b6477b9d6ded3ac024b4 (patch) | |
tree | af9d39f9bc0b404ab867135c6e82420b3c522a27 | |
parent | util.prosodyctl.shell: Close state on exit to fix saving shell history (diff) | |
download | prosody-435e008568a0590f89e3b6477b9d6ded3ac024b4.tar.xz prosody-435e008568a0590f89e3b6477b9d6ded3ac024b4.zip |
util.startup: Close state on exit to ensure GC finalizers are called
Ensures a last round of garbage collection and that finalizers are
called. Fixes things like proper closing of SQLite3 state.
There are more calls to os.exit() but most of them exit with an error or
in a case where a final GC sweep might not matter as much.
It would be nice if this was the default.
Calling util.statup.exit() everywhere may be sensible, but would be more
involved, requiring imports everywhere.
-rwxr-xr-x | prosodyctl | 8 | ||||
-rw-r--r-- | util/startup.lua | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/prosodyctl b/prosodyctl index 4e4099d57..35c062202 100755 --- a/prosodyctl +++ b/prosodyctl @@ -663,11 +663,11 @@ local command_runner = async.runner(function () local ok, ret = modulemanager.call_module_method(module, "command", arg); if ok then if type(ret) == "number" then - os.exit(ret); + os.exit(ret, true); elseif type(ret) == "string" then show_message(ret); end - os.exit(0); -- :) + os.exit(0, true); -- :) else show_message("Failed to execute command: "..error_messages[ret]); os.exit(1); -- :( @@ -745,10 +745,10 @@ local command_runner = async.runner(function () end - os.exit(0); + os.exit(0, true); end - os.exit(commands[command](arg)); + os.exit(commands[command](arg), true); end, watchers); command_runner:run(true); diff --git a/util/startup.lua b/util/startup.lua index 10ff1875e..545b6ae7d 100644 --- a/util/startup.lua +++ b/util/startup.lua @@ -648,7 +648,7 @@ function startup.shutdown() end function startup.exit() - os.exit(prosody.shutdown_code); + os.exit(prosody.shutdown_code, true); end -- prosodyctl only |