Changeset

12863:891edd1ebde6 0.12

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.
author Kim Alvefur <zash@zash.se>
date Sun, 22 Jan 2023 14:45:47 +0100
parents 12862:3dfb87814d65
children 12864:9f9633364044 12877:f6cca7cbf3b2
files prosodyctl util/startup.lua
diffstat 2 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/prosodyctl	Sun Jan 22 14:42:07 2023 +0100
+++ b/prosodyctl	Sun Jan 22 14:45:47 2023 +0100
@@ -663,11 +663,11 @@
 		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 @@
 		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);
--- a/util/startup.lua	Sun Jan 22 14:42:07 2023 +0100
+++ b/util/startup.lua	Sun Jan 22 14:45:47 2023 +0100
@@ -648,7 +648,7 @@
 end
 
 function startup.exit()
-	os.exit(prosody.shutdown_code);
+	os.exit(prosody.shutdown_code, true);
 end
 
 -- prosodyctl only