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