class RedisClient::SentinelConfig

def resolve_replica

def resolve_replica
  each_sentinel do |sentinel_client|
    replicas = sentinel_client.call("SENTINEL", "replicas", @name, &@to_list_of_hash)
    replicas.reject! do |r|
      flags = r["flags"].to_s.split(",")
      flags.include?("s_down") || flags.include?("o_down")
    end
    next if replicas.empty?
    replica = replicas.sample
    return Config.new(host: replica["ip"], port: Integer(replica["port"]), **@client_config)
  end
rescue ConnectionError
  raise ConnectionError, "No sentinels available"
else
  raise ConnectionError, "Couldn't locate a replica for role: #{@name}"
end