Merge 'gossiper: failure_detector_loop_for_node: abort send_gossip_echo using abort_source' from Benny Halevy
Currently send_gossip_echo has a 22 seconds timeout during which _abort_source is ignored. Use a function-local abort_source to abort send_gossip_echo either on timeout or if _abort_source requested abort, and co_return in the latter case. Closes scylladb/scylladb#12296 * github.com:scylladb/scylladb: gossiper: make send_gossip_echo cancellable gossiper: add send_echo helper idl, message: make with_timeout and cancellable verb attributes composable gossiper: failure_detector_loop_for_node: ignore abort_requested_exception gossiper: failure_detector_loop_for_node: check if abort_requested in loop condition
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include <seastar/core/app-template.hh>
|
||||
#include <seastar/core/sstring.hh>
|
||||
#include <seastar/core/thread.hh>
|
||||
#include <seastar/core/coroutine.hh>
|
||||
#include <seastar/rpc/rpc_types.hh>
|
||||
#include <seastar/util/closeable.hh>
|
||||
#include "db/config.hh"
|
||||
@@ -157,15 +158,12 @@ public:
|
||||
future<> test_echo() {
|
||||
test_logger.info("=== {} ===", __func__);
|
||||
int64_t gen = 0x1;
|
||||
return ser::gossip_rpc_verbs::send_gossip_echo(&ms, _server_id, netw::messaging_service::clock_type::now() + std::chrono::seconds(10), gen, false).then_wrapped([] (auto&& f) {
|
||||
try {
|
||||
f.get();
|
||||
return make_ready_future<>();
|
||||
} catch (std::runtime_error& e) {
|
||||
test_logger.error("test_echo: {}", e.what());
|
||||
}
|
||||
return make_ready_future<>();
|
||||
});
|
||||
abort_source as;
|
||||
try {
|
||||
co_await ser::gossip_rpc_verbs::send_gossip_echo(&ms, _server_id, netw::messaging_service::clock_type::now() + std::chrono::seconds(10), as, gen, false);
|
||||
} catch (...) {
|
||||
test_logger.error("test_echo: {}", std::current_exception());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user