(slot int)
| 1004 | } |
| 1005 | |
| 1006 | func (c *clusterState) slotRandomNode(slot int) (*clusterNode, error) { |
| 1007 | nodes := c.slotNodes(slot) |
| 1008 | if len(nodes) == 0 { |
| 1009 | return c.nodes.Random() |
| 1010 | } |
| 1011 | if len(nodes) == 1 { |
| 1012 | return nodes[0], nil |
| 1013 | } |
| 1014 | randomNodes := rand.Perm(len(nodes)) |
| 1015 | for _, idx := range randomNodes { |
| 1016 | if node := nodes[idx]; !node.Failing() { |
| 1017 | return node, nil |
| 1018 | } |
| 1019 | } |
| 1020 | return nodes[randomNodes[0]], nil |
| 1021 | } |
| 1022 | |
| 1023 | func (c *clusterState) slotShardPickerSlaveNode(slot int, shardPicker routing.ShardPicker) (*clusterNode, error) { |
| 1024 | nodes := c.slotNodes(slot) |
no test coverage detected