Diff

util/startup.lua @ 12553:cc0ec0277813 0.12

util.startup: Fix async waiting for last shutdown steps Observed problem: When shutting down prosody would immediately exit after waiting for s2s connections to close, skipping the last cleanup events and reporting the exit reason and code. This happens because prosody.main_thread is in a waiting state and queuing startup.shutdown is dispatched trough the main loop via nexttick, but since the main loop was no longer running at that point it proceeded to the end of the prosody script and exited there.
author Kim Alvefur <zash@zash.se>
date Tue, 14 Jun 2022 16:28:49 +0200
parent 12423:3ae9299d61d7
child 12779:f0474d40364c
line wrap: on
line diff
--- a/util/startup.lua	Sun Jun 12 01:50:33 2022 +0200
+++ b/util/startup.lua	Tue Jun 14 16:28:49 2022 +0200
@@ -353,7 +353,7 @@
 			reason = reason;
 			code = code;
 		});
-		server.setquitting(true);
+		prosody.main_thread:run(startup.shutdown);
 	end
 end
 
@@ -644,6 +644,10 @@
 
 	prosody.log("debug", "Shutdown reason was: %s", prosody.shutdown_reason or "not specified");
 	prosody.log("debug", "Exiting with status code: %d", prosody.shutdown_code or 0);
+	server.setquitting(true);
+end
+
+function startup.exit()
 	os.exit(prosody.shutdown_code);
 end