gossiper: Bring back abort on listener failure

The refactoring in c48dcf607a dropped
the noexcept around listener notification. This is probably
unintentional, as the comment which explains why we need to abort was
preserved.

Closes #14573
This commit is contained in:
Tomasz Grabiec
2023-06-23 21:28:13 +02:00
committed by Pavel Emelyanov
parent 565f5c7380
commit 6449c59963

View File

@@ -1698,8 +1698,12 @@ future<> gossiper::apply_new_states(inet_address addr, endpoint_state& local_sta
// state indefinitely. Unless the value changes again, we wouldn't retry notifications.
// Some values are set only once, so listeners would never be re-run.
// Listeners should decide which failures are non-fatal and swallow them.
for (auto&& key : changed) {
co_await do_on_change_notifications(addr, key, remote_map.at(key));
try {
for (auto&& key: changed) {
co_await do_on_change_notifications(addr, key, remote_map.at(key));
}
} catch (...) {
on_fatal_internal_error(logger, format("Gossip change listener failed: {}", std::current_exception()));
}
maybe_rethrow_exception(std::move(ep));