From 3f94385fc66d00d686a171c7a1acc64fc0dc3ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E6=85=95?= Date: Thu, 9 May 2019 16:29:59 +0800 Subject: [PATCH] etcdserver: update raftStatus --- etcdserver/server.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/etcdserver/server.go b/etcdserver/server.go index 6fbbbb120..0139f5908 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -1699,7 +1699,7 @@ func (s *EtcdServer) promoteMember(ctx context.Context, id uint64) ([]*membershi } func (s *EtcdServer) mayPromoteMember(id types.ID) error { - err := isLearnerReady(uint64(id)) + err := s.isLearnerReady(uint64(id)) if err != nil { return err } @@ -1727,12 +1727,8 @@ func (s *EtcdServer) mayPromoteMember(id types.ID) error { // check whether the learner catches up with leader or not. // Note: it will return nil if member is not found in cluster or if member is not learner. // These two conditions will be checked before apply phase later. -func isLearnerReady(id uint64) error { - // sanity check, this can happen in the unit test when we do not start node. - if raftStatus == nil { - return nil - } - rs := raftStatus() +func (s *EtcdServer) isLearnerReady(id uint64) error { + rs := s.raftStatus() // leader's raftStatus.Progress is not nil if rs.Progress == nil { @@ -2612,3 +2608,8 @@ func (s *EtcdServer) IsLearner() bool { func (s *EtcdServer) IsMemberExist(id types.ID) bool { return s.cluster.IsMemberExist(id) } + +// raftStatus returns the raft status of this etcd node. +func (s *EtcdServer) raftStatus() raft.Status { + return s.r.Node.Status() +}