]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/tools/perf_crimson_msgr: support stop signal in server mode
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 25 May 2023 06:16:16 +0000 (14:16 +0800)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 17 Oct 2023 16:18:41 +0000 (16:18 +0000)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
(cherry picked from commit 6d6043fa70c60e0e0d37c12fe3b05439246155f3)

src/crimson/tools/perf_crimson_msgr.cc

index 676f0fddf63ee4d149685284f99bad3f4bc20021..f1e331f3176f36c3e3559565eab7a3419637641d 100644 (file)
@@ -12,6 +12,7 @@
 #include <seastar/core/sleep.hh>
 #include <seastar/core/semaphore.hh>
 #include <seastar/core/smp.hh>
+#include <seastar/core/thread.hh>
 
 #include "common/ceph_time.h"
 #include "messages/MOSDOp.h"
@@ -22,6 +23,7 @@
 #include "crimson/net/Connection.h"
 #include "crimson/net/Dispatcher.h"
 #include "crimson/net/Messenger.h"
+#include "crimson/osd/stop_signal.h"
 
 using namespace std;
 using namespace std::chrono_literals;
@@ -227,13 +229,6 @@ static seastar::future<> run(
         });
       }
 
-      seastar::future<> wait() {
-        return seastar::smp::submit_to(msgr_sid, [this] {
-          ceph_assert(msgr);
-          return msgr->wait();
-        });
-      }
-
       static seastar::future<ServerFRef> create(
           seastar::shard_id msgr_sid,
           unsigned msg_len,
@@ -870,13 +865,12 @@ static seastar::future<> run(
       ceph_assert(seastar::smp::count > server_conf.core);
       logger().info("\nperf settings:\n  smp={}\n  {}\n",
                     seastar::smp::count, server_conf.str());
-      return server->init(server_conf.addr
-      // dispatch ops
-      ).then([server] {
-        return server->wait();
-      // shutdown
-      }).then([server, fp_server = std::move(fp_server)] () mutable {
-        return server->shutdown().then([cleanup = std::move(fp_server)] {});
+      return seastar::async([server, server_conf, fp_server=std::move(fp_server)] {
+        // FIXME: SIGINT is not received by stop_signal
+        seastar_apps_lib::stop_signal should_stop;
+        server->init(server_conf.addr).get();
+        should_stop.wait().get();
+        server->shutdown().get();
       });
     }
   }).finally([] {