From e8c74b4e31ebc2a2328bb3b53ff920008d7ecefd Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Tue, 30 Jan 2024 15:35:07 -0500 Subject: [PATCH] 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 --- src/rgw/rgw_main.cc | 2 ++ src/rgw/rgw_signal.cc | 4 ++++ src/rgw/rgw_signal.h | 1 + 3 files changed, 7 insertions(+) diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index be211e28c92ad..6d0dab8245af7 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 4bb29d0df6835..e7a6de5190c66 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 68fc4f614a394..3cd09e7645eb5 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(); -- 2.39.5