Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
别团等shy哥发育
redis
提交
f188fa4a
R
redis
项目概览
别团等shy哥发育
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f188fa4a
编写于
5月 02, 2014
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Cluster: Tcl cluster client: handle MOVED/ASK.
上级
5069e0b9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
5 deletion
+24
-5
tests/support/cluster.tcl
tests/support/cluster.tcl
+24
-5
未找到文件。
tests/support/cluster.tcl
浏览文件 @
f188fa4a
...
...
@@ -166,12 +166,31 @@ proc ::redis_cluster::__dispatch__ {id method args} {
}
# Execute the command in the node we think is the slot owner.
set node
[
dict get $::redis_cluster::nodes
(
$id
)
$node_addr
]
set link
[
dict get $node link
]
if
{[
catch
{
$link
$method
{*}
$args
}
e
]}
{
# TODO: trap redirection error
set retry 10
while
{[
incr retry -1
]}
{
if
{
$retry
< 5
}
{
after 100
}
set node
[
dict get $::redis_cluster::nodes
(
$id
)
$node_addr
]
set link
[
dict get $node link
]
if
{[
catch
{
$link
$method
{*}
$args
}
e
]}
{
if
{[
string range $e 0 4
]
eq
{
MOVED
}}
{
# MOVED redirection.
::redis_cluster::__method__refresh_nodes_map $id
set node_addr
[
dict get $::redis_cluster::slots
(
$id
)
$slot
]
continue
}
elseif
{[
string range $e 0 2
]
eq
{
ASK
}}
{
# ASK redirection.
set node_addr
[
lindex $e 2
]
continue
}
else
{
# Non redirecting error.
error $e $::errorInfo $::errorCode
}
}
else
{
# OK query went fine
return $e
}
}
return $e
error
"Too many redirections or failures contacting Redis Cluster."
}
else
{
uplevel 1
[
list ::redis_cluster::__method__$method $id
]
$args
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录