MCPcopy
hub / github.com/redis/go-redis / slotRandomNode

Method slotRandomNode

osscluster.go:1006–1021  ·  view source on GitHub ↗
(slot int)

Source from the content-addressed store, hash-verified

1004}
1005
1006func (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
1023func (c *clusterState) slotShardPickerSlaveNode(slot int, shardPicker routing.ShardPicker) (*clusterNode, error) {
1024 nodes := c.slotNodes(slot)

Callers 1

slotReadOnlyNodeMethod · 0.80

Calls 3

slotNodesMethod · 0.95
FailingMethod · 0.80
RandomMethod · 0.45

Tested by

no test coverage detected