Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
37580fc4
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
37580fc4
编写于
11月 18, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
11月 18, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #18254 from taosdata/feature/3.0_mhli
fix(sync): fix elect bug
上级
1339e50a
3306785e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
13 deletion
+19
-13
source/libs/sync/src/syncMain.c
source/libs/sync/src/syncMain.c
+19
-13
未找到文件。
source/libs/sync/src/syncMain.c
浏览文件 @
37580fc4
...
...
@@ -1946,12 +1946,14 @@ static void syncNodeEqPeerHeartbeatTimer(void* param, void* tmrId) {
SSyncHbTimerData
*
pData
=
syncHbTimerDataAcquire
(
hbDataRid
);
if
(
pData
==
NULL
)
{
sError
(
"hb timer get pData NULL, %"
PRId64
,
hbDataRid
);
return
;
}
SSyncNode
*
pSyncNode
=
syncNodeAcquire
(
pData
->
syncNodeRid
);
if
(
pSyncNode
==
NULL
)
{
syncHbTimerDataRelease
(
pData
);
sError
(
"hb timer get pSyncNode NULL"
);
return
;
}
...
...
@@ -1960,28 +1962,39 @@ static void syncNodeEqPeerHeartbeatTimer(void* param, void* tmrId) {
if
(
!
pSyncNode
->
isStart
)
{
syncNodeRelease
(
pSyncNode
);
syncHbTimerDataRelease
(
pData
);
sError
(
"vgId:%d, hb timer sync node already stop"
,
pSyncNode
->
vgId
);
return
;
}
if
(
pSyncNode
->
state
!=
TAOS_SYNC_STATE_LEADER
)
{
syncNodeRelease
(
pSyncNode
);
syncHbTimerDataRelease
(
pData
);
sError
(
"vgId:%d, hb timer sync node not leader"
,
pSyncNode
->
vgId
);
return
;
}
if
(
pSyncNode
->
pRaftStore
==
NULL
)
{
syncNodeRelease
(
pSyncNode
);
syncHbTimerDataRelease
(
pData
);
sError
(
"vgId:%d, hb timer raft store already stop"
,
pSyncNode
->
vgId
);
return
;
}
// sNTrace(pSyncNode, "eq peer hb timer");
int64_t
timerLogicClock
=
atomic_load_64
(
&
pSyncTimer
->
logicClock
);
int64_t
msgLogicClock
=
atomic_load_64
(
&
pData
->
logicClock
);
// sTrace("vgId:%d, eq peer hb timer", pSyncNode->vgId);
if
(
pSyncNode
->
replicaNum
>
1
)
{
int64_t
timerLogicClock
=
atomic_load_64
(
&
pSyncTimer
->
logicClock
);
int64_t
msgLogicClock
=
atomic_load_64
(
&
pData
->
logicClock
);
if
(
timerLogicClock
==
msgLogicClock
)
{
if
(
syncIsInit
())
{
// sTrace("vgId:%d, reset peer hb timer", pSyncNode->vgId);
taosTmrReset
(
syncNodeEqPeerHeartbeatTimer
,
pSyncTimer
->
timerMS
,
(
void
*
)
hbDataRid
,
syncEnv
()
->
pTimerManager
,
&
pSyncTimer
->
pTimer
);
}
else
{
sError
(
"sync env is stop, reset peer hb timer error"
);
}
SRpcMsg
rpcMsg
=
{
0
};
(
void
)
syncBuildHeartbeat
(
&
rpcMsg
,
pSyncNode
->
vgId
);
...
...
@@ -1996,16 +2009,9 @@ static void syncNodeEqPeerHeartbeatTimer(void* param, void* tmrId) {
// send msg
syncNodeSendHeartbeat
(
pSyncNode
,
&
pSyncMsg
->
destId
,
&
rpcMsg
);
if
(
syncIsInit
())
{
taosTmrReset
(
syncNodeEqPeerHeartbeatTimer
,
pSyncTimer
->
timerMS
,
pData
,
syncEnv
()
->
pTimerManager
,
&
pSyncTimer
->
pTimer
);
}
else
{
sError
(
"sync env is stop, syncNodeEqHeartbeatTimer"
);
}
}
else
{
sTrace
(
"
==syncNodeEqPeerHeartbeatTimer== timerLogicClock:%"
PRId64
", msgLogicClock:%"
PRId64
""
,
timerLogicClock
,
msgLogicClock
);
sTrace
(
"
vgId:%d, do not send hb, timerLogicClock:%"
PRId64
", msgLogicClock:%"
PRId64
""
,
pSyncNode
->
vgId
,
timerLogicClock
,
msgLogicClock
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录