Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xindoo
redis
提交
1f9728cb
R
redis
项目概览
xindoo
/
redis
通知
2
Star
2
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,发现更多精彩内容 >>
提交
1f9728cb
编写于
11月 19, 2013
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sentinel: failover script execution fixed.
上级
90635488
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
9 deletion
+21
-9
src/sentinel.c
src/sentinel.c
+21
-9
未找到文件。
src/sentinel.c
浏览文件 @
1f9728cb
...
...
@@ -437,6 +437,16 @@ sentinelAddr *createSentinelAddr(char *hostname, int port) {
return
sa
;
}
/* Return a duplicate of the source address. */
sentinelAddr
*
dupSentinelAddr
(
sentinelAddr
*
src
)
{
sentinelAddr
*
sa
;
sa
=
zmalloc
(
sizeof
(
*
sa
));
sa
->
ip
=
sdsnew
(
src
->
ip
);
sa
->
port
=
src
->
port
;
return
sa
;
}
/* Free a Sentinel address. Can't fail. */
void
releaseSentinelAddr
(
sentinelAddr
*
sa
)
{
sdsfree
(
sa
->
ip
);
...
...
@@ -783,15 +793,13 @@ void sentinelPendingScriptsCommand(redisClient *c) {
*
* <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
*
* It is called every time a failover
starts, ends, or is abort
ed.
* It is called every time a failover
is perform
ed.
*
* <state> is
"start", "end" or "abort
".
* <state> is
currently always "failover
".
* <role> is either "leader" or "observer".
*
* from/to fields are respectively master -> promoted slave addresses for
* "start" and "end", or the reverse (promoted slave -> master) in case of
* "abort".
*/
* "start" and "end". */
void
sentinelCallClientReconfScript
(
sentinelRedisInstance
*
master
,
int
role
,
char
*
state
,
sentinelAddr
*
from
,
sentinelAddr
*
to
)
{
char
fromport
[
32
],
toport
[
32
];
...
...
@@ -2009,13 +2017,21 @@ void sentinelReceiveHelloMessages(redisAsyncContext *c, void *reply, void *privd
if
(
master_port
!=
msgmaster
->
addr
->
port
||
!
strcmp
(
msgmaster
->
addr
->
ip
,
token
[
5
]))
{
sentinelAddr
*
old_addr
;
sentinelEvent
(
REDIS_WARNING
,
"+switch-master"
,
msgmaster
,
"%s %s %d %s %d"
,
msgmaster
->
name
,
msgmaster
->
addr
->
ip
,
msgmaster
->
addr
->
port
,
token
[
5
],
master_port
);
old_addr
=
dupSentinelAddr
(
msgmaster
->
addr
);
sentinelResetMasterAndChangeAddress
(
msgmaster
,
token
[
5
],
master_port
);
sentinelCallClientReconfScript
(
msgmaster
,
SENTINEL_OBSERVER
,
"start"
,
old_addr
,
msgmaster
->
addr
);
releaseSentinelAddr
(
old_addr
);
}
}
}
...
...
@@ -3038,13 +3054,9 @@ void sentinelFailoverDetectEnd(sentinelRedisInstance *master) {
}
if
(
not_reconfigured
==
0
)
{
int
role
=
SENTINEL_LEADER
;
sentinelEvent
(
REDIS_WARNING
,
"+failover-end"
,
master
,
"%@"
);
master
->
failover_state
=
SENTINEL_FAILOVER_STATE_UPDATE_CONFIG
;
master
->
failover_state_change_time
=
mstime
();
sentinelCallClientReconfScript
(
master
,
role
,
"end"
,
master
->
addr
,
master
->
promoted_slave
->
addr
);
}
/* If I'm the leader it is a good idea to send a best effort SLAVEOF
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录