diff --git a/lib/redis/cluster.rb b/lib/redis/cluster.rb index 3cd1ff151..6206864b1 100644 --- a/lib/redis/cluster.rb +++ b/lib/redis/cluster.rb @@ -216,7 +216,10 @@ def try_send(node, method_name, *args, retry_count: 3, &block) node.public_send(method_name, *args, &block) rescue CommandError => err if err.message.start_with?('MOVED') - assign_redirection_node(err.message).public_send(method_name, *args, &block) + raise if retry_count <= 0 + node = assign_redirection_node(err.message) + retry_count -= 1 + retry elsif err.message.start_with?('ASK') raise if retry_count <= 0 node = assign_asking_node(err.message)