]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson: stop osd before stopping messengers 31904/head
authorKefu Chai <kchai@redhat.com>
Wed, 27 Nov 2019 09:26:46 +0000 (17:26 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 27 Nov 2019 09:35:20 +0000 (17:35 +0800)
so we can drain all pending tasks referencing messenger before
destroying it, otherwise they will be using a already-stopped
messenger when they are still alive.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/osd/main.cc

index e8584bdbe345ae4264af554acce763072fafe2e2..8d9152debd4acf885a1051b88d5ac68264fd7c85 100644 (file)
@@ -173,9 +173,6 @@ int main(int argc, char* argv[])
           reference_wrapper<crimson::net::Messenger>(client_msgr.local()),
           reference_wrapper<crimson::net::Messenger>(hb_front_msgr.local()),
           reference_wrapper<crimson::net::Messenger>(hb_back_msgr.local())).get();
-        seastar::engine().at_exit([&] {
-          return osd.stop();
-        });
         seastar::engine().at_exit([&] {
           return seastar::when_all_succeed(cluster_msgr.stop(),
                                            client_msgr.stop(),
@@ -194,6 +191,9 @@ int main(int argc, char* argv[])
            local_conf().get_val<uuid_d>("osd_uuid"),
            local_conf().get_val<uuid_d>("fsid")).get();
         }
+        seastar::engine().at_exit([&] {
+          return osd.stop();
+        });
         if (config.count("mkkey") || config.count("mkfs")) {
           seastar::engine().exit(0);
         } else {