func (c *Config) handleDiscovery() error { p, err := discovery.Do(c.Discovery, c.Name, c.Peer.Addr) // This is fatal, discovery encountered an unexpected error // and we have no peer list. if err != nil && len(c.Peers) == 0 { log.Fatalf("Discovery failed and a backup peer list wasn't provided: %v", err) return err } // Warn about errors coming from discovery, this isn't fatal // since the user might have provided a peer list elsewhere. if err != nil { log.Warnf("Discovery encountered an error but a backup peer list (%v) was provided: %v", c.Peers, err) } for i := range p { // Strip the scheme off of the peer if it has one // TODO(bp): clean this up! purl, err := url.Parse(p[i]) if err == nil { p[i] = purl.Host } } c.Peers = p return nil }
// Helper function to do discovery and return results in expected format func (s *PeerServer) handleDiscovery(discoverURL string) (peers []string, err error) { peers, err = discovery.Do(discoverURL, s.Config.Name, s.Config.URL) // Warn about errors coming from discovery, this isn't fatal // since the user might have provided a peer list elsewhere, // or there is some log in data dir. if err != nil { log.Warnf("Discovery encountered an error: %v", err) return } for i := range peers { // Strip the scheme off of the peer if it has one // TODO(bp): clean this up! purl, err := url.Parse(peers[i]) if err == nil { peers[i] = purl.Host } } log.Infof("Discovery fetched back peer list: %v", peers) return }