]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/test: chain invoke_on_all() future instead of calling get() 69288/head
authorRonen Friedman <rfriedma@redhat.com>
Thu, 4 Jun 2026 13:05:26 +0000 (13:05 +0000)
committerRonen Friedman <rfriedma@redhat.com>
Thu, 4 Jun 2026 18:38:50 +0000 (18:38 +0000)
The reactors start-up code on ARM64 uses invoke_on_all() to
set a configuration option.
Replace smp::invoke_on_all().get() with future chaining. This
avoids waiting on a future from a reactor continuation (outside
of a seastar thread) that throws exception.

See: https://docs.seastar.io/master/classseastar_1_1future.html#a50bfeff0acccd2f365cce40f9954218c

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
src/test/crimson/seastar_runner.h

index 2e2ed6e2d25f92470fae43e7197e55df6aa293cc..c54ae32464fc9ac76440e0ce24bec2db6d4cbf49 100644 (file)
@@ -70,7 +70,7 @@ struct SeastarRunner {
   {
     auto ret = app.run(argc, argv, [this] {
       on_end.reset(new seastar::readable_eventfd);
-      return seastar::now().then([this] {
+      return seastar::now().then([] {
 // FIXME: The stall detector uses glibc backtrace function to
 // collect backtraces, this causes ASAN failures on ARM.
 // For now we just extend timeout duration to 10000h in order to
@@ -79,11 +79,14 @@ struct SeastarRunner {
 // Will remove once the ticket fixed.
 // Ceph ticket see: https://tracker.ceph.com/issues/65635
 #ifdef __aarch64__
-       seastar::smp::invoke_on_all([] {
+       return seastar::smp::invoke_on_all([] {
          using namespace std::chrono;
          seastar::engine().update_blocked_reactor_notify_ms(duration_cast<milliseconds>(10000h));
-       }).get();
+       });
+#else
+       return seastar::now();
 #endif
+      }).then([this] {
        begin_signaled = true;
        [[maybe_unused]] auto r = ::eventfd_write(begin_fd.get(), APP_RUNNING);
        assert(r == 0);