From 1f59ca1d6669ba6bcc80178d108326335e362f71 Mon Sep 17 00:00:00 2001 From: yajima-yusuke Date: Thu, 21 Nov 2019 10:42:14 +0900 Subject: [PATCH] Fix for cluster sends recursive `MOVED` error in very short time. --- lib/redis/cluster.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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)