From 765cd5d8b3e64f94b732294913fc38b098967a53 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Fri, 9 May 2014 02:08:50 -0700 Subject: [PATCH] refactor(find_cluster): make it simpler --- server/peer_server.go | 46 ++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/server/peer_server.go b/server/peer_server.go index 6683bc96b..8fc77e64d 100644 --- a/server/peer_server.go +++ b/server/peer_server.go @@ -211,43 +211,26 @@ func (s *PeerServer) FindCluster(discoverURL string, peers []string) (toStart bo // Attempt cluster discovery if discoverURL != "" { discoverPeers, discoverErr := s.handleDiscovery(discoverURL) - // It is registered in discover url - if discoverErr == nil { - // start as a leader in a new cluster - if len(discoverPeers) == 0 { - s.isNewCluster = true - log.Debugf("%s is starting a new cluster via discover service", name) - toStart = true + // It is not registered in discover url + if discoverErr != nil { + log.Warnf("%s failed to connect discovery service[%v]: %v", name, discoverURL, discoverErr) + if len(peers) == 0 { + err = fmt.Errorf("%s, the new instance, must register itself to discovery service as required", name) return } - + log.Debugf("%s is joining peers %v from -peers flag", name, peers) + } else { log.Debugf("%s is joining a cluster %v via discover service", name, discoverPeers) - if rejected, ierr := s.startAsFollower(discoverPeers, s.Config.RetryTimes); rejected { - log.Debugf("%s should work as standby for the cluster %v: %v", name, discoverPeers, ierr) - possiblePeers = discoverPeers - } else if ierr != nil { - log.Warnf("%s cannot connect to existing cluster %v: %v", name, discoverPeers, ierr) - err = ierr - } else { - toStart = true - } - return - } - log.Warnf("%s failed to connect discovery service[%v]: %v", name, discoverURL, discoverErr) - - if len(peers) == 0 { - err = fmt.Errorf("%s, the new instance, must register itself to discovery service as required", name) - return + peers = discoverPeers } } + possiblePeers = peers - if len(peers) > 0 { - log.Debugf("%s is joining peers %v from -peers flag", name, peers) - if rejected, ierr := s.startAsFollower(peers, s.Config.RetryTimes); rejected { - log.Debugf("%s should work as standby for the cluster %v: %v", name, peers, ierr) - possiblePeers = peers + if len(possiblePeers) > 0 { + if rejected, ierr := s.startAsFollower(possiblePeers, s.Config.RetryTimes); rejected { + log.Debugf("%s should work as standby for the cluster %v: %v", name, possiblePeers, ierr) } else if ierr != nil { - log.Warnf("%s cannot connect to existing peers %v: %v", name, peers, ierr) + log.Warnf("%s cannot connect to existing peers %v: %v", name, possiblePeers, ierr) err = ierr } else { toStart = true @@ -255,8 +238,9 @@ func (s *PeerServer) FindCluster(discoverURL string, peers []string) (toStart bo return } + // start as a leader in a new cluster s.isNewCluster = true - log.Infof("%s is starting a new cluster.", s.Config.Name) + log.Infof("%s is starting a new cluster", s.Config.Name) toStart = true return }