mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
client: drop unnecessary Nodes type
This commit is contained in:
parent
7ff84351f5
commit
3d4e1f59dc
@ -95,13 +95,12 @@ type Response struct {
|
|||||||
Index uint64
|
Index uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
type Nodes []*Node
|
|
||||||
type Node struct {
|
type Node struct {
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
Value string `json:"value"`
|
Value string `json:"value"`
|
||||||
Nodes Nodes `json:"nodes"`
|
Nodes []*Node `json:"nodes"`
|
||||||
ModifiedIndex uint64 `json:"modifiedIndex"`
|
ModifiedIndex uint64 `json:"modifiedIndex"`
|
||||||
CreatedIndex uint64 `json:"createdIndex"`
|
CreatedIndex uint64 `json:"createdIndex"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) String() string {
|
func (n *Node) String() string {
|
||||||
|
@ -195,7 +195,7 @@ func (d *discovery) createSelf(contents string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *discovery) checkCluster() (client.Nodes, int, uint64, error) {
|
func (d *discovery) checkCluster() ([]*client.Node, int, uint64, error) {
|
||||||
configKey := path.Join("/", d.cluster, "_config")
|
configKey := path.Join("/", d.cluster, "_config")
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), client.DefaultRequestTimeout)
|
ctx, cancel := context.WithTimeout(context.Background(), client.DefaultRequestTimeout)
|
||||||
// find cluster size
|
// find cluster size
|
||||||
@ -224,7 +224,7 @@ func (d *discovery) checkCluster() (client.Nodes, int, uint64, error) {
|
|||||||
}
|
}
|
||||||
return nil, 0, 0, err
|
return nil, 0, 0, err
|
||||||
}
|
}
|
||||||
nodes := make(client.Nodes, 0)
|
nodes := make([]*client.Node, 0)
|
||||||
// append non-config keys to nodes
|
// append non-config keys to nodes
|
||||||
for _, n := range resp.Node.Nodes {
|
for _, n := range resp.Node.Nodes {
|
||||||
if !(path.Base(n.Key) == path.Base(configKey)) {
|
if !(path.Base(n.Key) == path.Base(configKey)) {
|
||||||
@ -254,7 +254,7 @@ func (d *discovery) logAndBackoffForRetry(step string) {
|
|||||||
d.clock.Sleep(retryTime)
|
d.clock.Sleep(retryTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *discovery) checkClusterRetry() (client.Nodes, int, uint64, error) {
|
func (d *discovery) checkClusterRetry() ([]*client.Node, int, uint64, error) {
|
||||||
if d.retries < nRetries {
|
if d.retries < nRetries {
|
||||||
d.logAndBackoffForRetry("cluster status check")
|
d.logAndBackoffForRetry("cluster status check")
|
||||||
return d.checkCluster()
|
return d.checkCluster()
|
||||||
@ -262,7 +262,7 @@ func (d *discovery) checkClusterRetry() (client.Nodes, int, uint64, error) {
|
|||||||
return nil, 0, 0, ErrTooManyRetries
|
return nil, 0, 0, ErrTooManyRetries
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *discovery) waitNodesRetry() (client.Nodes, error) {
|
func (d *discovery) waitNodesRetry() ([]*client.Node, error) {
|
||||||
if d.retries < nRetries {
|
if d.retries < nRetries {
|
||||||
d.logAndBackoffForRetry("waiting for other nodes")
|
d.logAndBackoffForRetry("waiting for other nodes")
|
||||||
nodes, n, index, err := d.checkCluster()
|
nodes, n, index, err := d.checkCluster()
|
||||||
@ -274,13 +274,13 @@ func (d *discovery) waitNodesRetry() (client.Nodes, error) {
|
|||||||
return nil, ErrTooManyRetries
|
return nil, ErrTooManyRetries
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *discovery) waitNodes(nodes client.Nodes, size int, index uint64) (client.Nodes, error) {
|
func (d *discovery) waitNodes(nodes []*client.Node, size int, index uint64) ([]*client.Node, error) {
|
||||||
if len(nodes) > size {
|
if len(nodes) > size {
|
||||||
nodes = nodes[:size]
|
nodes = nodes[:size]
|
||||||
}
|
}
|
||||||
// watch from the next index
|
// watch from the next index
|
||||||
w := d.c.Watcher(d.cluster, &client.WatcherOptions{WaitIndex: index + 1, Recursive: true})
|
w := d.c.Watcher(d.cluster, &client.WatcherOptions{WaitIndex: index + 1, Recursive: true})
|
||||||
all := make(client.Nodes, len(nodes))
|
all := make([]*client.Node, len(nodes))
|
||||||
copy(all, nodes)
|
copy(all, nodes)
|
||||||
for _, n := range all {
|
for _, n := range all {
|
||||||
if path.Base(n.Key) == path.Base(d.selfKey()) {
|
if path.Base(n.Key) == path.Base(d.selfKey()) {
|
||||||
@ -311,7 +311,7 @@ func (d *discovery) selfKey() string {
|
|||||||
return path.Join("/", d.cluster, d.id.String())
|
return path.Join("/", d.cluster, d.id.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
func nodesToCluster(ns client.Nodes) string {
|
func nodesToCluster(ns []*client.Node) string {
|
||||||
s := make([]string, len(ns))
|
s := make([]string, len(ns))
|
||||||
for i, n := range ns {
|
for i, n := range ns {
|
||||||
s[i] = n.Value
|
s[i] = n.Value
|
||||||
@ -319,7 +319,7 @@ func nodesToCluster(ns client.Nodes) string {
|
|||||||
return strings.Join(s, ",")
|
return strings.Join(s, ",")
|
||||||
}
|
}
|
||||||
|
|
||||||
type sortableNodes struct{ client.Nodes }
|
type sortableNodes struct{ Nodes []*client.Node }
|
||||||
|
|
||||||
func (ns sortableNodes) Len() int { return len(ns.Nodes) }
|
func (ns sortableNodes) Len() int { return len(ns.Nodes) }
|
||||||
func (ns sortableNodes) Less(i, j int) bool {
|
func (ns sortableNodes) Less(i, j int) bool {
|
||||||
|
@ -226,14 +226,14 @@ func TestCheckCluster(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestWaitNodes(t *testing.T) {
|
func TestWaitNodes(t *testing.T) {
|
||||||
all := client.Nodes{
|
all := []*client.Node{
|
||||||
0: {Key: "/1000/1", CreatedIndex: 2},
|
0: {Key: "/1000/1", CreatedIndex: 2},
|
||||||
1: {Key: "/1000/2", CreatedIndex: 3},
|
1: {Key: "/1000/2", CreatedIndex: 3},
|
||||||
2: {Key: "/1000/3", CreatedIndex: 4},
|
2: {Key: "/1000/3", CreatedIndex: 4},
|
||||||
}
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
nodes client.Nodes
|
nodes []*client.Node
|
||||||
rs []*client.Response
|
rs []*client.Response
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -341,7 +341,7 @@ func TestCreateSelf(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNodesToCluster(t *testing.T) {
|
func TestNodesToCluster(t *testing.T) {
|
||||||
nodes := client.Nodes{
|
nodes := []*client.Node{
|
||||||
0: {Key: "/1000/1", Value: "1=1.1.1.1", CreatedIndex: 1},
|
0: {Key: "/1000/1", Value: "1=1.1.1.1", CreatedIndex: 1},
|
||||||
1: {Key: "/1000/2", Value: "2=2.2.2.2", CreatedIndex: 2},
|
1: {Key: "/1000/2", Value: "2=2.2.2.2", CreatedIndex: 2},
|
||||||
2: {Key: "/1000/3", Value: "3=3.3.3.3", CreatedIndex: 3},
|
2: {Key: "/1000/3", Value: "3=3.3.3.3", CreatedIndex: 3},
|
||||||
@ -355,7 +355,7 @@ func TestNodesToCluster(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSortableNodes(t *testing.T) {
|
func TestSortableNodes(t *testing.T) {
|
||||||
ns := client.Nodes{
|
ns := []*client.Node{
|
||||||
0: {CreatedIndex: 5},
|
0: {CreatedIndex: 5},
|
||||||
1: {CreatedIndex: 1},
|
1: {CreatedIndex: 1},
|
||||||
2: {CreatedIndex: 3},
|
2: {CreatedIndex: 3},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user