From: Ronen Friedman Date: Thu, 4 Jun 2026 13:05:26 +0000 (+0000) Subject: crimson/test: chain invoke_on_all() future instead of calling get() X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F69288%2Fhead;p=ceph.git crimson/test: chain invoke_on_all() future instead of calling get() 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 --- diff --git a/src/test/crimson/seastar_runner.h b/src/test/crimson/seastar_runner.h index 2e2ed6e2d25..c54ae32464f 100644 --- a/src/test/crimson/seastar_runner.h +++ b/src/test/crimson/seastar_runner.h @@ -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(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);