discovery: add d.selfKey()

release-2.0
Xiang Li 2014-09-22 11:13:49 -07:00
parent b8eb21c027
commit 2fd5a9863b
1 changed files with 7 additions and 5 deletions

View File

@ -54,15 +54,14 @@ func (d *discovery) discover() (*etcdhttp.Peers, error) {
}
func (d *discovery) createSelf() error {
self := path.Join("/", d.cluster, fmt.Sprintf("%d", d.id))
// create self key
resp, err := d.c.Create(self, string(d.ctx), 0)
resp, err := d.c.Create(d.selfKey(), string(d.ctx), 0)
if err != nil {
return err
}
// ensure self appears on the server we connected to
w := d.c.Watch(self, resp.Node.CreatedIndex)
w := d.c.Watch(d.selfKey(), resp.Node.CreatedIndex)
if _, err = w.Next(); err != nil {
return err
}
@ -70,7 +69,6 @@ func (d *discovery) createSelf() error {
}
func (d *discovery) checkCluster() (client.Nodes, int, error) {
self := path.Join("/", d.cluster, fmt.Sprintf("%d", d.id))
resp, err := d.c.Get(d.cluster)
if err != nil {
return nil, 0, err
@ -93,7 +91,7 @@ func (d *discovery) checkCluster() (client.Nodes, int, error) {
// find self position
for i := range nodes {
if nodes[i].Key == self {
if nodes[i].Key == d.selfKey() {
break
}
if i >= size-1 {
@ -121,6 +119,10 @@ func (d *discovery) waitNodes(nodes client.Nodes, size int) (client.Nodes, error
return all, nil
}
func (d *discovery) selfKey() string {
return path.Join("/", d.cluster, fmt.Sprintf("%d", d.id))
}
func nodesToPeers(ns client.Nodes) (*etcdhttp.Peers, error) {
s := make([]string, len(ns))
for i, n := range ns {