From: Kefu Chai Date: Wed, 16 Jun 2021 16:04:37 +0000 (+0800) Subject: crimson/osd: use stop_signal from seastar X-Git-Tag: v17.1.0~1627^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a1d5ded9937d6166f4023ecafab0a084dcd0ed29;p=ceph.git 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 --- 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; -};