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

Method slotSlaveNode

osscluster.go:935–961  ·  view source on GitHub ↗
(slot int)

Source from the content-addressed store, hash-verified

933}
934
935func (c *clusterState) slotSlaveNode(slot int) (*clusterNode, error) {
936 nodes := c.slotNodes(slot)
937 switch len(nodes) {
938 case 0:
939 return c.nodes.Random()
940 case 1:
941 return nodes[0], nil
942 case 2:
943 slave := nodes[1]
944 if !slave.Failing() && !slave.Loading() {
945 return slave, nil
946 }
947 return nodes[0], nil
948 default:
949 var slave *clusterNode
950 for i := 0; i < 10; i++ {
951 n := rand.Intn(len(nodes)-1) + 1
952 slave = nodes[n]
953 if !slave.Failing() && !slave.Loading() {
954 return slave, nil
955 }
956 }
957
958 // All slaves are loading - use master.
959 return nodes[0], nil
960 }
961}
962
963func (c *clusterState) slotClosestNode(slot int) (*clusterNode, error) {
964 nodes := c.slotNodes(slot)

Callers 1

slotReadOnlyNodeMethod · 0.80

Calls 4

slotNodesMethod · 0.95
FailingMethod · 0.95
LoadingMethod · 0.95
RandomMethod · 0.45

Tested by

no test coverage detected