]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: use stop_signal from seastar 41894/head
authorKefu Chai <kchai@redhat.com>
Wed, 16 Jun 2021 16:04:37 +0000 (00:04 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 16 Jun 2021 17:13:24 +0000 (01:13 +0800)
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 <kchai@redhat.com>
src/crimson/osd/CMakeLists.txt
src/crimson/osd/main.cc
src/crimson/osd/stop_signal.cc [deleted file]
src/crimson/osd/stop_signal.h [deleted file]

index 8bf9c7796ae02a90c62729243338fd916f0186da..934f96f3cd34b4ae8ce6e3e880826723190c7cee 100644 (file)
@@ -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
index 4b47d89b1510720a232b2a2fce69382d011c4abb..af526fd0fd2a39f31ed4fbd6d892078877cddf9a 100644 (file)
@@ -7,6 +7,7 @@
 #include <iostream>
 #include <random>
 
+#include <seastar/apps/lib/stop_signal.hh>
 #include <seastar/core/app-template.hh>
 #include <seastar/core/print.hh>
 #include <seastar/core/thread.hh>
@@ -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 (file)
index 975f9ed..0000000
+++ /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 <csignal>
-#include <seastar/core/reactor.hh>
-
-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 (file)
index 995b735..0000000
+++ /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 <seastar/core/condition-variable.hh>
-#include <seastar/core/sharded.hh>
-
-class StopSignal {
-public:
-  StopSignal();
-  ~StopSignal();
-  seastar::future<> wait();
-
-private:
-  void signaled();
-
-private:
-  bool caught;
-  seastar::condition_variable should_stop;
-};