Преглед изворни кода

fix(discovery): remove its own address from peer list to join

Yicheng Qin пре 12 година
родитељ
комит
df49265674
1 измењених фајлова са 13 додато и 0 уклоњено
  1. 13 0
      server/peer_server.go

+ 13 - 0
server/peer_server.go

@@ -164,6 +164,19 @@ func (s *PeerServer) findCluster(discoverURL string, peers []string) {
 	}
 	}
 	peers = append(peers, prevPeers...)
 	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 there is backup peer lists, use it to find cluster
 	if len(peers) > 0 {
 	if len(peers) > 0 {
 		ok := s.joinCluster(peers)
 		ok := s.joinCluster(peers)