Changeset

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
parents 12549:3729a6bdb562
children 12554:dbbbcf6b805e 12557:ee5b061588ea
files prosody util/startup.lua
diffstat 2 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/prosody	Sun Jun 12 01:50:33 2022 +0200
+++ b/prosody	Tue Jun 14 16:28:49 2022 +0200
@@ -82,4 +82,4 @@
 
 loop();
 
-thread:run(startup.shutdown);
+startup.exit();
--- 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