From a1d5ded9937d6166f4023ecafab0a084dcd0ed29 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 17 Jun 2021 00:04:37 +0800 Subject: [PATCH] crimson/osd: use stop_signal from seastar and disable app_cfg.auto_handle_sigint_sigterm, otherwise app template handles SIGINT and SIGTERM by itself, and calls app.stop(). but we don't use this mechinary at all. we use seastar::defer() instead of seastar::at_exit() for doing graceful shutdown and cleanup. Signed-off-by: Kefu Chai --- src/crimson/osd/CMakeLists.txt | 1 - src/crimson/osd/main.cc | 9 ++++++--- src/crimson/osd/stop_signal.cc | 33 --------------------------------- src/crimson/osd/stop_signal.h | 21 --------------------- 4 files changed, 6 insertions(+), 58 deletions(-) delete mode 100644 src/crimson/osd/stop_signal.cc delete mode 100644 src/crimson/osd/stop_signal.h diff --git a/src/crimson/osd/CMakeLists.txt b/src/crimson/osd/CMakeLists.txt index 8bf9c7796ae0..934f96f3cd34 100644 --- a/src/crimson/osd/CMakeLists.txt +++ b/src/crimson/osd/CMakeLists.txt @@ -10,7 +10,6 @@ add_executable(crimson-osd pg_meta.cc replicated_backend.cc shard_services.cc - stop_signal.cc object_context.cc ops_executer.cc osd_operation.cc diff --git a/src/crimson/osd/main.cc b/src/crimson/osd/main.cc index 4b47d89b1510..af526fd0fd2a 100644 --- a/src/crimson/osd/main.cc +++ b/src/crimson/osd/main.cc @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -23,7 +24,6 @@ #include "global/pidfile.h" #include "osd.h" -#include "stop_signal.h" using config_t = crimson::common::ConfigProxy; @@ -177,7 +177,10 @@ seastar::future<> fetch_config() int main(int argc, char* argv[]) { - seastar::app_template app; + seastar::app_template::config app_cfg; + app_cfg.name = "Crimson"; + app_cfg.auto_handle_sigint_sigterm = false; + seastar::app_template app(std::move(app_cfg)); app.add_options() ("mkkey", "generate a new secret key. " "This is normally used in combination with --mkfs") @@ -209,7 +212,7 @@ int main(int argc, char* argv[]) return seastar::async([&] { try { FatalSignal fatal_signal; - StopSignal should_stop; + seastar_apps_lib::stop_signal should_stop; if (config.count("debug")) { seastar::global_logger_registry().set_all_loggers_level( seastar::log_level::debug diff --git a/src/crimson/osd/stop_signal.cc b/src/crimson/osd/stop_signal.cc deleted file mode 100644 index 975f9edd8274..000000000000 --- a/src/crimson/osd/stop_signal.cc +++ /dev/null @@ -1,33 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*- -// vim: ts=8 sw=2 smarttab - -#include "stop_signal.h" - -#include -#include - -StopSignal::StopSignal() -{ - seastar::engine().handle_signal(SIGINT, [this] { signaled(); }); - seastar::engine().handle_signal(SIGTERM, [this] { signaled(); }); -} - -StopSignal::~StopSignal() -{ - seastar::engine().handle_signal(SIGINT, [] {}); - seastar::engine().handle_signal(SIGTERM, [] {}); -} - -seastar::future<> StopSignal::wait() -{ - return should_stop.wait([this] { return caught; }); -} - -void StopSignal::signaled() -{ - if (caught) { - return; - } - caught = true; - should_stop.signal(); -} diff --git a/src/crimson/osd/stop_signal.h b/src/crimson/osd/stop_signal.h deleted file mode 100644 index 995b7355aaf1..000000000000 --- a/src/crimson/osd/stop_signal.h +++ /dev/null @@ -1,21 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*- -// vim: ts=8 sw=2 smarttab - -#pragma once - -#include -#include - -class StopSignal { -public: - StopSignal(); - ~StopSignal(); - seastar::future<> wait(); - -private: - void signaled(); - -private: - bool caught; - seastar::condition_variable should_stop; -}; -- 2.47.3