From 363ea87f5173db122fb93e272fde35ceef52540d Mon Sep 17 00:00:00 2001 From: Gleb Natapov Date: Wed, 15 Feb 2023 15:44:23 +0200 Subject: [PATCH] raft: abort applier fiber when a state machine aborts After 5badf20c7af481e2eb69cbfaf94f6b5997284bee applier fiber does not stop after it gets abort error from a state machine which may trigger an assertion because previous batch is not applied. Fix it. Fixes #12863 (cherry picked from commit 9bdef9158ec1e1f082e1eff866e6921040659c39) --- raft/server.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/raft/server.cc b/raft/server.cc index 16c149e4dc..1c05f1d3bd 100644 --- a/raft/server.cc +++ b/raft/server.cc @@ -1144,7 +1144,7 @@ future<> server_impl::applier_fiber() { co_await _state_machine->apply(std::move(commands)); } catch (abort_requested_exception& e) { logger.info("[{}] applier fiber stopped because state machine was aborted: {}", _id, e); - co_return; + throw stop_apply_fiber{}; } catch (...) { std::throw_with_nested(raft::state_machine_error{}); }