annotate mod_traceback/mod_traceback.lua @ 5853:97c9b76867ca

mod_log_ringbuffer: Detach event handlers on logging reload (thanks Menel) Otherwise the global event handlers accumulate, one added each time logging is reoladed, and each invocation of the signal or event triggers one dump of each created ringbuffer.
author Kim Alvefur <zash@zash.se>
date Sun, 03 Mar 2024 11:23:40 +0100
parents dde9d21a599f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2773
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 module:set_global();
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local traceback = require "util.debug".traceback;
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
5851
dde9d21a599f mod_traceback: Hook signal via event instead of directly
Kim Alvefur <zash@zash.se>
parents: 2773
diff changeset
5 local signal = module:get_option_string(module.name, "SIGUSR1");
dde9d21a599f mod_traceback: Hook signal via event instead of directly
Kim Alvefur <zash@zash.se>
parents: 2773
diff changeset
6 module:hook("signal/" .. signal, function()
dde9d21a599f mod_traceback: Hook signal via event instead of directly
Kim Alvefur <zash@zash.se>
parents: 2773
diff changeset
7 module:log("info", "Received %s, writing traceback", signal);
dde9d21a599f mod_traceback: Hook signal via event instead of directly
Kim Alvefur <zash@zash.se>
parents: 2773
diff changeset
8 local f = io.open(prosody.paths.data .. "/traceback.txt", "a+");
2773
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 f:write(traceback(), "\n");
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 f:close();
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 end);
7a4e8dbbd30d mod_traceback: Write current stack trace to file on SIGUSR1
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12