view plugins/mod_debug_reset.lua @ 13976:a2d4c71f5066

mod_admin_shell: Add debug:ping() which prints debug logs until pong Essentially a verbose version of xmpp:ping(), but more useful for debugging s2s issues without having to watch (and have enabled) debug logs at the same time and try to pick out where the start and end are.
author Kim Alvefur <zash@zash.se>
date Sun, 05 Oct 2025 11:08:27 +0200
parents 8ad432953300
children 8f50e7e43df4
line wrap: on
line source

-- This module will "reset" the server when the client connection count drops
-- to zero. This is somewhere between a reload and a full process restart.
-- It is useful to ensure isolation between test runs, for example. It may
-- also be of use for some kinds of manual testing.

module:set_global();

local hostmanager = require "prosody.core.hostmanager";

local function do_reset()
	module:log("info", "Performing reset...");
	local hosts = {};
	for host in pairs(prosody.hosts) do
		table.insert(hosts, host);
	end
	module:fire_event("server-resetting");
	for _, host in ipairs(hosts) do
		hostmanager.deactivate(host);
		hostmanager.activate(host);
		module:log("info", "Reset complete");
		module:fire_event("server-reset");
	end
end

function module.add_host(host_module)
	host_module:hook("resource-unbind", function ()
		if next(prosody.full_sessions) == nil then
			do_reset();
		end
	end);
end

local console_env = module:shared("/*/admin_shell/env");
console_env.debug_reset = {
	reset = do_reset;
};