(ctx context.Context)
| 867 | } |
| 868 | |
| 869 | func (c *sentinelFailover) RandomReplicaAddr(ctx context.Context) (string, error) { |
| 870 | if c.opt == nil { |
| 871 | return "", errors.New("opt is nil") |
| 872 | } |
| 873 | |
| 874 | addresses, err := c.replicaAddrs(ctx, false) |
| 875 | if err != nil { |
| 876 | return "", err |
| 877 | } |
| 878 | |
| 879 | if len(addresses) == 0 && c.opt.UseDisconnectedReplicas { |
| 880 | addresses, err = c.replicaAddrs(ctx, true) |
| 881 | if err != nil { |
| 882 | return "", err |
| 883 | } |
| 884 | } |
| 885 | |
| 886 | if len(addresses) == 0 { |
| 887 | return c.MasterAddr(ctx) |
| 888 | } |
| 889 | return addresses[rand.Intn(len(addresses))], nil |
| 890 | } |
| 891 | |
| 892 | func (c *sentinelFailover) MasterAddr(ctx context.Context) (string, error) { |
| 893 | c.mu.RLock() |
no test coverage detected