From: Matt Benjamin Date: Tue, 30 Jan 2024 20:35:07 +0000 (-0500) Subject: rgw: ignore SIGXFSZ, which apparently can triggered by heavy ops-log traffic X-Git-Tag: v20.0.0~2174^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F55381%2Fhead;p=ceph.git rgw: ignore SIGXFSZ, which apparently can triggered by heavy ops-log traffic Fixes: https://tracker.ceph.com/issues/64244 That is, it causes radosgw to ignore SIGXFSZ, which in the apparent reproducer should not cause radosgw to terminate. Updated to call unregister_async_signal_handler (frees a structure). Signed-off-by: Matt Benjamin --- diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index be211e28c92a..6d0dab8245af 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -134,6 +134,7 @@ int main(int argc, char *argv[]) register_async_signal_handler(SIGTERM, rgw::signal::handle_sigterm); register_async_signal_handler(SIGINT, rgw::signal::handle_sigterm); register_async_signal_handler(SIGUSR1, rgw::signal::handle_sigterm); + register_async_signal_handler(SIGXFSZ, rgw::signal::sig_handler_noop); sighandler_alrm = signal(SIGALRM, godown_alarm); main.init_perfcounters(); @@ -184,6 +185,7 @@ int main(int argc, char *argv[]) unregister_async_signal_handler(SIGTERM, rgw::signal::handle_sigterm); unregister_async_signal_handler(SIGINT, rgw::signal::handle_sigterm); unregister_async_signal_handler(SIGUSR1, rgw::signal::handle_sigterm); + unregister_async_signal_handler(SIGXFSZ, rgw::signal::sig_handler_noop); shutdown_async_signal_handler(); }; diff --git a/src/rgw/rgw_signal.cc b/src/rgw/rgw_signal.cc index 4bb29d0df683..e7a6de5190c6 100644 --- a/src/rgw/rgw_signal.cc +++ b/src/rgw/rgw_signal.cc @@ -33,6 +33,10 @@ static int signal_fd[2] = {0, 0}; namespace rgw { namespace signal { +void sig_handler_noop(int signum) { + /* NOP */ +} /* sig_handler_noop */ + void sighup_handler(int signum) { if (rgw::AppMain::ops_log_file != nullptr) { rgw::AppMain::ops_log_file->reopen(); diff --git a/src/rgw/rgw_signal.h b/src/rgw/rgw_signal.h index 68fc4f614a39..3cd09e7645eb 100644 --- a/src/rgw/rgw_signal.h +++ b/src/rgw/rgw_signal.h @@ -19,6 +19,7 @@ namespace rgw { namespace signal { +void sig_handler_noop(int signum); void signal_shutdown(); void wait_shutdown(); int signal_fd_init();