diff --git a/src/v/raft/consensus.cc b/src/v/raft/consensus.cc index 2c97020b6c41e..0aa02026fac93 100644 --- a/src/v/raft/consensus.cc +++ b/src/v/raft/consensus.cc @@ -243,7 +243,14 @@ ss::future<> consensus::stop() { co_await _event_manager.stop(); co_await _append_requests_buffer.stop(); co_await _batcher.stop(); - co_await _bg.close(); + + auto f = _bg.close(); + /** + * acquire lock after closing the gate, this way after + */ + auto u = co_await _op_lock.get_units(); + _op_lock.broken(); + co_await std::move(f); // close writer if we have to if (unlikely(_snapshot_writer)) {