diff --git a/server/peer_server.go b/server/peer_server.go index 422733c3b..4f85d7e93 100644 --- a/server/peer_server.go +++ b/server/peer_server.go @@ -164,6 +164,19 @@ func (s *PeerServer) findCluster(discoverURL string, peers []string) { } peers = append(peers, prevPeers...) + // Remove its own peer address from the peer list to join + u, err := url.Parse(s.Config.URL) + if err != nil { + log.Fatalf("cannot parse peer address %v: %v", s.Config.URL, err) + } + filteredPeers := make([]string, 0) + for _, v := range peers { + if v != u.Host { + filteredPeers = append(filteredPeers, v) + } + } + peers = filteredPeers + // if there is backup peer lists, use it to find cluster if len(peers) > 0 { ok := s.joinCluster(peers)