Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Turbo码先生
redis
提交
8204ab00
R
redis
项目概览
Turbo码先生
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
8204ab00
编写于
6月 10, 2014
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Cluster: log when a master denies a failover auth.
上级
64e6d7af
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
44 addition
and
3 deletion
+44
-3
src/cluster.c
src/cluster.c
+44
-3
未找到文件。
src/cluster.c
浏览文件 @
8204ab00
...
...
@@ -2288,22 +2288,57 @@ void clusterSendFailoverAuthIfNeeded(clusterNode *node, clusterMsg *request) {
if
(
nodeIsSlave
(
myself
)
||
myself
->
numslots
==
0
)
return
;
/* Request epoch must be >= our currentEpoch. */
if
(
requestCurrentEpoch
<
server
.
cluster
->
currentEpoch
)
return
;
if
(
requestCurrentEpoch
<
server
.
cluster
->
currentEpoch
)
{
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: reqEpoch (%llu) < curEpoch(%llu)"
,
node
->
name
,
(
unsigned
long
long
)
requestCurrentEpoch
,
(
unsigned
long
long
)
server
.
cluster
->
currentEpoch
);
return
;
}
/* I already voted for this epoch? Return ASAP. */
if
(
server
.
cluster
->
lastVoteEpoch
==
server
.
cluster
->
currentEpoch
)
return
;
if
(
server
.
cluster
->
lastVoteEpoch
==
server
.
cluster
->
currentEpoch
)
{
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: already voted for epoch %llu"
,
node
->
name
,
(
unsigned
long
long
)
server
.
cluster
->
currentEpoch
);
return
;
}
/* Node must be a slave and its master down.
* The master can be non failing if the request is flagged
* with CLUSTERMSG_FLAG0_FORCEACK (manual failover). */
if
(
nodeIsMaster
(
node
)
||
master
==
NULL
||
(
!
nodeFailed
(
master
)
&&
!
force_ack
))
return
;
(
!
nodeFailed
(
master
)
&&
!
force_ack
))
{
if
(
nodeIsMaster
(
node
))
{
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: it is a master node"
,
node
->
name
);
}
else
if
(
master
==
NULL
)
{
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: I don't know its master"
,
node
->
name
);
}
else
if
(
!
nodeFailed
(
master
))
{
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: its master is up"
,
node
->
name
);
}
return
;
}
/* We did not voted for a slave about this master for two
* times the node timeout. This is not strictly needed for correctness
* of the algorithm but makes the base case more linear. */
if
(
mstime
()
-
node
->
slaveof
->
voted_time
<
server
.
cluster_node_timeout
*
2
)
{
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: already voted for epoch %llu"
,
node
->
name
,
(
unsigned
long
long
)
server
.
cluster
->
currentEpoch
);
return
;
}
/* The slave requesting the vote must have a configEpoch for the claimed
* slots that is >= the one of the masters currently serving the same
...
...
@@ -2318,6 +2353,12 @@ void clusterSendFailoverAuthIfNeeded(clusterNode *node, clusterMsg *request) {
/* If we reached this point we found a slot that in our current slots
* is served by a master with a greater configEpoch than the one claimed
* by the slave requesting our vote. Refuse to vote for this slave. */
redisLog
(
REDIS_WARNING
,
"Failover auth denied to %.40s: "
"slot %d epoch (%llu) > reqEpoch (%llu)"
,
node
->
name
,
j
,
(
unsigned
long
long
)
server
.
cluster
->
slots
[
j
]
->
configEpoch
,
(
unsigned
long
long
)
requestConfigEpoch
);
return
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录