Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9b089d64
T
TDengine
项目概览
taosdata
/
TDengine
10 个月 前同步成功
通知
1177
Star
22014
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9b089d64
编写于
8月 17, 2023
作者:
B
Benguang Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: wrap state updating of vnodes and mnodes in mndProcessStatusReq
上级
bad2bb52
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
30 deletion
+43
-30
source/dnode/mnode/impl/src/mndDnode.c
source/dnode/mnode/impl/src/mndDnode.c
+43
-30
未找到文件。
source/dnode/mnode/impl/src/mndDnode.c
浏览文件 @
9b089d64
...
...
@@ -424,6 +424,47 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, SDnodeObj *pDnode, const S
return
0
;
}
static
bool
mndUpdateVnodeState
(
int32_t
vgId
,
SVnodeGid
*
pGid
,
SVnodeLoad
*
pVload
)
{
bool
stateChanged
=
false
;
bool
roleChanged
=
pGid
->
syncState
!=
pVload
->
syncState
||
(
pVload
->
syncTerm
!=
-
1
&&
pGid
->
syncTerm
!=
pVload
->
syncTerm
)
||
pGid
->
roleTimeMs
!=
pVload
->
roleTimeMs
;
if
(
roleChanged
||
pGid
->
syncRestore
!=
pVload
->
syncRestore
||
pGid
->
syncCanRead
!=
pVload
->
syncCanRead
||
pGid
->
startTimeMs
!=
pVload
->
startTimeMs
)
{
mInfo
(
"vgId:%d, state changed by status msg, old state:%s restored:%d canRead:%d new state:%s restored:%d "
"canRead:%d, dnode:%d"
,
vgId
,
syncStr
(
pGid
->
syncState
),
pGid
->
syncRestore
,
pGid
->
syncCanRead
,
syncStr
(
pVload
->
syncState
),
pVload
->
syncRestore
,
pVload
->
syncCanRead
,
pGid
->
dnodeId
);
pGid
->
syncState
=
pVload
->
syncState
;
pGid
->
syncTerm
=
pVload
->
syncTerm
;
pGid
->
syncRestore
=
pVload
->
syncRestore
;
pGid
->
syncCanRead
=
pVload
->
syncCanRead
;
pGid
->
startTimeMs
=
pVload
->
startTimeMs
;
pGid
->
roleTimeMs
=
pVload
->
roleTimeMs
;
stateChanged
=
true
;
}
return
stateChanged
;
}
static
bool
mndUpdateMnodeState
(
SMnodeObj
*
pObj
,
SMnodeLoad
*
pMload
)
{
bool
stateChanged
=
false
;
bool
roleChanged
=
pObj
->
syncState
!=
pMload
->
syncState
||
(
pMload
->
syncTerm
!=
-
1
&&
pObj
->
syncTerm
!=
pMload
->
syncTerm
)
||
pObj
->
roleTimeMs
!=
pMload
->
roleTimeMs
;
if
(
roleChanged
||
pObj
->
syncRestore
!=
pMload
->
syncRestore
)
{
mInfo
(
"dnode:%d, mnode syncState from %s to %s, restoreState from %d to %d, syncTerm from %"
PRId64
" to %"
PRId64
,
pObj
->
id
,
syncStr
(
pObj
->
syncState
),
syncStr
(
pMload
->
syncState
),
pObj
->
syncRestore
,
pMload
->
syncRestore
,
pObj
->
syncTerm
,
pMload
->
syncTerm
);
pObj
->
syncState
=
pMload
->
syncState
;
pObj
->
syncTerm
=
pMload
->
syncTerm
;
pObj
->
syncRestore
=
pMload
->
syncRestore
;
pObj
->
roleTimeMs
=
pMload
->
roleTimeMs
;
stateChanged
=
true
;
}
return
stateChanged
;
}
static
int32_t
mndProcessStatusReq
(
SRpcMsg
*
pReq
)
{
SMnode
*
pMnode
=
pReq
->
info
.
node
;
SStatusReq
statusReq
=
{
0
};
...
...
@@ -506,23 +547,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) {
if
(
pVload
->
roleTimeMs
==
0
)
{
pVload
->
roleTimeMs
=
statusReq
.
rebootTime
;
}
bool
roleChanged
=
pGid
->
syncState
!=
pVload
->
syncState
||
(
pVload
->
syncTerm
!=
-
1
&&
pGid
->
syncTerm
!=
pVload
->
syncTerm
)
||
pGid
->
roleTimeMs
!=
pVload
->
roleTimeMs
;
if
(
reboot
||
roleChanged
||
pGid
->
syncRestore
!=
pVload
->
syncRestore
||
pGid
->
syncCanRead
!=
pVload
->
syncCanRead
)
{
mInfo
(
"vgId:%d, state changed by status msg, old state:%s restored:%d canRead:%d new state:%s restored:%d "
"canRead:%d, dnode:%d"
,
pVgroup
->
vgId
,
syncStr
(
pGid
->
syncState
),
pGid
->
syncRestore
,
pGid
->
syncCanRead
,
syncStr
(
pVload
->
syncState
),
pVload
->
syncRestore
,
pVload
->
syncCanRead
,
pDnode
->
id
);
pGid
->
syncState
=
pVload
->
syncState
;
pGid
->
syncTerm
=
pVload
->
syncTerm
;
pGid
->
syncRestore
=
pVload
->
syncRestore
;
pGid
->
syncCanRead
=
pVload
->
syncCanRead
;
pGid
->
startTimeMs
=
pVload
->
startTimeMs
;
pGid
->
roleTimeMs
=
pVload
->
roleTimeMs
;
stateChanged
=
true
;
}
stateChanged
=
mndUpdateVnodeState
(
pVgroup
->
vgId
,
pGid
,
pVload
);
break
;
}
}
...
...
@@ -545,19 +570,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) {
if
(
statusReq
.
mload
.
roleTimeMs
==
0
)
{
statusReq
.
mload
.
roleTimeMs
=
statusReq
.
rebootTime
;
}
bool
roleChanged
=
pObj
->
syncState
!=
statusReq
.
mload
.
syncState
||
(
statusReq
.
mload
.
syncTerm
!=
-
1
&&
pObj
->
syncTerm
!=
statusReq
.
mload
.
syncTerm
)
||
pObj
->
roleTimeMs
!=
statusReq
.
mload
.
roleTimeMs
;
if
(
roleChanged
||
pObj
->
syncRestore
!=
statusReq
.
mload
.
syncRestore
)
{
mInfo
(
"dnode:%d, mnode syncState from %s to %s, restoreState from %d to %d, syncTerm from %"
PRId64
" to %"
PRId64
,
pObj
->
id
,
syncStr
(
pObj
->
syncState
),
syncStr
(
statusReq
.
mload
.
syncState
),
pObj
->
syncRestore
,
statusReq
.
mload
.
syncRestore
,
pObj
->
syncTerm
,
statusReq
.
mload
.
syncTerm
);
pObj
->
syncState
=
statusReq
.
mload
.
syncState
;
pObj
->
syncTerm
=
statusReq
.
mload
.
syncTerm
;
pObj
->
syncRestore
=
statusReq
.
mload
.
syncRestore
;
pObj
->
roleTimeMs
=
statusReq
.
mload
.
roleTimeMs
;
}
mndUpdateMnodeState
(
pObj
,
&
statusReq
.
mload
);
mndReleaseMnode
(
pMnode
,
pObj
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录