Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
别团等shy哥发育
redis
提交
1a6abe7d
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,发现更多精彩内容 >>
提交
1a6abe7d
编写于
11月 14, 2013
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sentinel: master address selection in get-master-address refactored.
上级
0eeb0a07
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
20 addition
and
12 deletion
+20
-12
src/sentinel.c
src/sentinel.c
+20
-12
未找到文件。
src/sentinel.c
浏览文件 @
1a6abe7d
...
...
@@ -1228,6 +1228,24 @@ int sentinelRedisInstanceNoDownFor(sentinelRedisInstance *ri, mstime_t ms) {
return
most_recent
==
0
||
(
mstime
()
-
most_recent
)
>
ms
;
}
/* Return the current master address, that is, its address or the address
* of the promoted slave if already operational. */
sentinelAddr
*
sentinelGetCurrentMasterAddress
(
sentinelRedisInstance
*
master
)
{
/* If we are failing over the master, and the state is already
* SENTINEL_FAILOVER_STATE_RECONF_SLAVES or greater, it means that we
* already have the new configuration epoch in the master, and the
* slave acknowledged the configuration switch. Advertise the new
* address. */
if
((
master
->
flags
&
SRI_FAILOVER_IN_PROGRESS
)
&&
master
->
promoted_slave
&&
master
->
failover_state
>=
SENTINEL_FAILOVER_STATE_RECONF_SLAVES
)
{
return
master
->
promoted_slave
->
addr
;
}
else
{
return
master
->
addr
;
}
}
/* ============================ Config handling ============================= */
char
*
sentinelHandleConfiguration
(
char
**
argv
,
int
argc
)
{
sentinelRedisInstance
*
ri
;
...
...
@@ -2219,18 +2237,8 @@ void sentinelCommand(redisClient *c) {
}
else
if
(
ri
->
info_refresh
==
0
)
{
addReplySds
(
c
,
sdsnew
(
"-IDONTKNOW I have not enough information to reply. Please ask another Sentinel.
\r\n
"
));
}
else
{
sentinelAddr
*
addr
=
ri
->
addr
;
/* If we are in the middle of a failover, and the slave was
* already successfully switched to master role, we can advertise
* the new address as slave in order to allow clients to talk
* with the new master ASAP. */
if
((
ri
->
flags
&
SRI_FAILOVER_IN_PROGRESS
)
&&
ri
->
promoted_slave
&&
ri
->
failover_state
>=
SENTINEL_FAILOVER_STATE_RECONF_SLAVES
)
{
addr
=
ri
->
promoted_slave
->
addr
;
}
sentinelAddr
*
addr
=
sentinelGetCurrentMasterAddress
(
ri
);
addReplyMultiBulkLen
(
c
,
2
);
addReplyBulkCString
(
c
,
addr
->
ip
);
addReplyBulkLongLong
(
c
,
addr
->
port
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录