diff --git a/manager/state/raft/raft.go b/manager/state/raft/raft.go index 4389db7848..afcb999d0d 100644 --- a/manager/state/raft/raft.go +++ b/manager/state/raft/raft.go @@ -401,7 +401,9 @@ func (n *Node) Run(ctx context.Context) error { // restoring from the state, campaign to be the // leader. if !n.restored { - if len(n.cluster.Members()) <= 1 { + // Node ID should be in the progress list to Campaign + _, ok := n.Node.Status().Progress[n.Config.ID] + if len(n.cluster.Members()) <= 1 && ok { if err := n.Campaign(n.Ctx); err != nil { panic("raft: cannot campaign to be the leader on node restore") }