]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: fix shutdown err with resources uncleaned 20073/head
authorTao Chen <chentao@umcloud.com>
Fri, 1 Dec 2017 08:42:44 +0000 (16:42 +0800)
committerNathan Cutler <ncutler@suse.com>
Tue, 23 Jan 2018 10:34:58 +0000 (11:34 +0100)
Fixed: http://tracker.ceph.com/issues/22296

Signed-off-by: Tao Chen <chentao@umcloud.com>
(cherry picked from commit 0fa2be059e649684a4fe15a456d564acde8e7831)

src/rgw/librgw.cc

index 90559f2d351eb906158323aa61c2d777e4b737f4..023c3622e264ce92722361da49738de9a6de1ee0 100644 (file)
@@ -24,6 +24,7 @@
 #include "include/str_list.h"
 #include "include/stringify.h"
 #include "global/global_init.h"
+#include "global/signal_handler.h"
 #include "common/config.h"
 #include "common/errno.h"
 #include "common/Timer.h"
 
 bool global_stop = false;
 
+static void handle_sigterm(int signum)
+{
+  dout(20) << __func__ << " SIGUSR1 ignored" << dendl;
+}
+
 namespace rgw {
 
   using std::string;
@@ -539,6 +545,9 @@ namespace rgw {
     fec = new RGWFrontendConfig("rgwlib");
     fe = new RGWLibFrontend(env, fec);
 
+    init_async_signal_handler();
+    register_async_signal_handler(SIGUSR1, handle_sigterm);
+
     map<string, string> service_map_meta;
     service_map_meta["pid"] = stringify(getpid());
     service_map_meta["frontend_type#" + fe_count] = "rgw-nfs";
@@ -573,6 +582,9 @@ namespace rgw {
     delete fec;
     delete ldh;
 
+    unregister_async_signal_handler(SIGUSR1, handle_sigterm);
+    shutdown_async_signal_handler();
+
     rgw_log_usage_finalize();
 
     delete olog;