diff --git a/src/v/cluster/controller_backend.cc b/src/v/cluster/controller_backend.cc index 5d7ece49baeb3..c7ed3d4652f39 100644 --- a/src/v/cluster/controller_backend.cc +++ b/src/v/cluster/controller_backend.cc @@ -1614,6 +1614,14 @@ controller_backend::force_abort_replica_set_update( } co_return errc::waiting_for_recovery; } else { + auto leader_id = partition->get_leader_id(); + if (leader_id && leader_id != _self) { + // The leader is alive and we are a follower. Wait for the leader to + // replicate the aborting configuration, but don't append it + // ourselves to minimize the chance of log inconsistency. + co_return errc::not_leader; + } + vlog( clusterlog.debug, "[{}] force-aborting reconfiguration",