func (c *httpClusterClient) getLeaderEndpoint() (string, error) { mAPI := NewMembersAPI(c) leader, err := mAPI.Leader(context.Background()) if err != nil { return "", err } return leader.ClientURLs[0], nil // TODO: how to handle multiple client URLs? }
func (n *ng) reconnect() error { n.Close() var client etcd.Client cfg := n.getEtcdClientConfig() var err error if client, err = etcd.New(cfg); err != nil { return err } ctx, cancelFunc := context.WithCancel(context.Background()) n.context = ctx n.cancelFunc = cancelFunc n.client = client n.kapi = etcd.NewKeysAPI(n.client) n.requireQuorum = true if n.options.EtcdConsistency == "WEAK" { n.requireQuorum = false } return nil }