Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
15b3ca43
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1185
Star
22015
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,发现更多精彩内容 >>
未验证
提交
15b3ca43
编写于
12月 03, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
12月 03, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #18656 from taosdata/FIX/TD-19334-3.0
fix: get result of tmsPutToQueue for FpCommitCb
上级
18a6713f
7eca2127
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
29 addition
and
20 deletion
+29
-20
include/libs/sync/sync.h
include/libs/sync/sync.h
+2
-2
source/dnode/mnode/impl/src/mndSync.c
source/dnode/mnode/impl/src/mndSync.c
+6
-3
source/dnode/vnode/src/vnd/vnodeSync.c
source/dnode/vnode/src/vnd/vnodeSync.c
+7
-6
source/libs/sync/inc/syncPipeline.h
source/libs/sync/inc/syncPipeline.h
+1
-1
source/libs/sync/src/syncPipeline.c
source/libs/sync/src/syncPipeline.c
+13
-8
未找到文件。
include/libs/sync/sync.h
浏览文件 @
15b3ca43
...
...
@@ -138,8 +138,8 @@ typedef struct SSnapshotMeta {
typedef
struct
SSyncFSM
{
void
*
data
;
void
(
*
FpCommitCb
)(
const
struct
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
);
void
(
*
FpPreCommitCb
)(
const
struct
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
);
int32_t
(
*
FpCommitCb
)(
const
struct
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
);
int32_t
(
*
FpPreCommitCb
)(
const
struct
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
);
void
(
*
FpRollBackCb
)(
const
struct
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
);
void
(
*
FpRestoreFinishCb
)(
const
struct
SSyncFSM
*
pFsm
);
...
...
source/dnode/mnode/impl/src/mndSync.c
浏览文件 @
15b3ca43
...
...
@@ -72,7 +72,7 @@ static int32_t mndSyncSendMsg(const SEpSet *pEpSet, SRpcMsg *pMsg) {
return
code
;
}
void
mndProcessWriteMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
int32_t
mndProcessWriteMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
SMnode
*
pMnode
=
pFsm
->
data
;
SSyncMgmt
*
pMgmt
=
&
pMnode
->
syncMgmt
;
SSdbRaw
*
pRaw
=
pMsg
->
pCont
;
...
...
@@ -114,12 +114,15 @@ void mndProcessWriteMsg(const SSyncFSM *pFsm, SRpcMsg *pMsg, const SFsmCbMeta *p
mError
(
"trans:%d, not found while execute in mnode since %s"
,
transId
,
terrstr
());
}
}
return
0
;
}
void
mndSyncCommitMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
mndProcessWriteMsg
(
pFsm
,
pMsg
,
pMeta
);
int32_t
mndSyncCommitMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
int32_t
code
=
mndProcessWriteMsg
(
pFsm
,
pMsg
,
pMeta
);
rpcFreeCont
(
pMsg
->
pCont
);
pMsg
->
pCont
=
NULL
;
return
code
;
}
int32_t
mndSyncGetSnapshot
(
const
SSyncFSM
*
pFsm
,
SSnapshot
*
pSnapshot
,
void
*
pReaderParam
,
void
**
ppReader
)
{
...
...
source/dnode/vnode/src/vnd/vnodeSync.c
浏览文件 @
15b3ca43
...
...
@@ -363,7 +363,7 @@ static int32_t vnodeSyncGetSnapshot(const SSyncFSM *pFsm, SSnapshot *pSnapshot)
return
0
;
}
static
void
vnodeSyncApplyMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
static
int32_t
vnodeSyncApplyMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
SVnode
*
pVnode
=
pFsm
->
data
;
pMsg
->
info
.
conn
.
applyIndex
=
pMeta
->
index
;
pMsg
->
info
.
conn
.
applyTerm
=
pMeta
->
term
;
...
...
@@ -374,17 +374,18 @@ static void vnodeSyncApplyMsg(const SSyncFSM *pFsm, SRpcMsg *pMsg, const SFsmCbM
pVnode
->
config
.
vgId
,
pFsm
,
pMeta
->
index
,
pMeta
->
term
,
pMsg
->
info
.
conn
.
applyIndex
,
pMeta
->
isWeak
,
pMeta
->
code
,
pMeta
->
state
,
syncStr
(
pMeta
->
state
),
TMSG_INFO
(
pMsg
->
msgType
));
tmsgPutToQueue
(
&
pVnode
->
msgCb
,
APPLY_QUEUE
,
pMsg
);
return
tmsgPutToQueue
(
&
pVnode
->
msgCb
,
APPLY_QUEUE
,
pMsg
);
}
static
void
vnodeSyncCommitMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
vnodeSyncApplyMsg
(
pFsm
,
pMsg
,
pMeta
);
static
int32_t
vnodeSyncCommitMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
return
vnodeSyncApplyMsg
(
pFsm
,
pMsg
,
pMeta
);
}
static
void
vnodeSyncPreCommitMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
static
int32_t
vnodeSyncPreCommitMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
if
(
pMeta
->
isWeak
==
1
)
{
vnodeSyncApplyMsg
(
pFsm
,
pMsg
,
pMeta
);
return
vnodeSyncApplyMsg
(
pFsm
,
pMsg
,
pMeta
);
}
return
0
;
}
static
void
vnodeSyncRollBackMsg
(
const
SSyncFSM
*
pFsm
,
SRpcMsg
*
pMsg
,
const
SFsmCbMeta
*
pMeta
)
{
...
...
source/libs/sync/inc/syncPipeline.h
浏览文件 @
15b3ca43
...
...
@@ -107,7 +107,7 @@ int32_t syncLogBufferReset(SSyncLogBuffer* pBuf, SSyncNode* pNode);
// private
SSyncRaftEntry
*
syncLogBufferGetOneEntry
(
SSyncLogBuffer
*
pBuf
,
SSyncNode
*
pNode
,
SyncIndex
index
,
bool
*
pInBuf
);
int32_t
syncLogBufferValidate
(
SSyncLogBuffer
*
pBuf
);
int32_t
syncLogBufferRollback
(
SSyncLogBuffer
*
pBuf
,
SyncIndex
toIndex
);
int32_t
syncLogBufferRollback
(
SSyncLogBuffer
*
pBuf
,
S
SyncNode
*
pNode
,
S
yncIndex
toIndex
);
#ifdef __cplusplus
}
...
...
source/libs/sync/src/syncPipeline.c
浏览文件 @
15b3ca43
...
...
@@ -310,7 +310,7 @@ int32_t syncLogBufferAccept(SSyncLogBuffer* pBuf, SSyncNode* pNode, SSyncRaftEnt
ASSERT
(
pEntry
->
index
==
pExist
->
index
);
if
(
pEntry
->
term
!=
pExist
->
term
)
{
(
void
)
syncLogBufferRollback
(
pBuf
,
index
);
(
void
)
syncLogBufferRollback
(
pBuf
,
pNode
,
index
);
}
else
{
sTrace
(
"vgId:%d, duplicate log entry received. index: %"
PRId64
", term: %"
PRId64
". log buffer: [%"
PRId64
" %"
PRId64
" %"
PRId64
", %"
PRId64
")"
,
...
...
@@ -457,9 +457,9 @@ int32_t syncLogFsmExecute(SSyncNode* pNode, SSyncFSM* pFsm, ESyncState role, Syn
cbMeta
.
flag
=
-
1
;
(
void
)
syncRespMgrGetAndDel
(
pNode
->
pSyncRespMgr
,
cbMeta
.
seqNum
,
&
rpcMsg
.
info
);
pFsm
->
FpCommitCb
(
pFsm
,
&
rpcMsg
,
&
cbMeta
);
int32_t
code
=
pFsm
->
FpCommitCb
(
pFsm
,
&
rpcMsg
,
&
cbMeta
);
ASSERT
(
rpcMsg
.
pCont
==
NULL
);
return
0
;
return
code
;
}
int32_t
syncLogBufferValidate
(
SSyncLogBuffer
*
pBuf
)
{
...
...
@@ -516,8 +516,9 @@ int32_t syncLogBufferCommit(SSyncLogBuffer* pBuf, SSyncNode* pNode, int64_t comm
}
if
(
syncLogFsmExecute
(
pNode
,
pFsm
,
role
,
term
,
pEntry
)
!=
0
)
{
sError
(
"vgId:%d, failed to execute sync log entry in FSM. log index:%"
PRId64
", term:%"
PRId64
""
,
vgId
,
pEntry
->
index
,
pEntry
->
term
);
sError
(
"vgId:%d, failed to commit sync log entry. index:%"
PRId64
", term:%"
PRId64
", role: %d, current term: %"
PRId64
,
vgId
,
pEntry
->
index
,
pEntry
->
term
,
role
,
term
);
goto
_out
;
}
pBuf
->
commitIndex
=
index
;
...
...
@@ -971,14 +972,18 @@ void syncLogBufferDestroy(SSyncLogBuffer* pBuf) {
return
;
}
int32_t
syncLogBufferRollback
(
SSyncLogBuffer
*
pBuf
,
SyncIndex
toIndex
)
{
int32_t
syncLogBufferRollback
(
SSyncLogBuffer
*
pBuf
,
S
SyncNode
*
pNode
,
S
yncIndex
toIndex
)
{
ASSERT
(
pBuf
->
commitIndex
<
toIndex
&&
toIndex
<=
pBuf
->
endIndex
);
sInfo
(
"vgId:%d, rollback sync log buffer. toindex: %"
PRId64
", buffer: [%"
PRId64
" %"
PRId64
" %"
PRId64
", %"
PRId64
")"
,
pNode
->
vgId
,
toIndex
,
pBuf
->
startIndex
,
pBuf
->
commitIndex
,
pBuf
->
matchIndex
,
pBuf
->
endIndex
);
SyncIndex
index
=
pBuf
->
endIndex
-
1
;
while
(
index
>=
toIndex
)
{
SSyncRaftEntry
*
pEntry
=
pBuf
->
entries
[
index
%
pBuf
->
size
].
pItem
;
if
(
pEntry
!=
NULL
)
{
syncEntryDestroy
(
pEntry
);
(
void
)
syncEntryDestroy
(
pEntry
);
pEntry
=
NULL
;
memset
(
&
pBuf
->
entries
[
index
%
pBuf
->
size
],
0
,
sizeof
(
pBuf
->
entries
[
0
]));
}
...
...
@@ -996,7 +1001,7 @@ int32_t syncLogBufferReset(SSyncLogBuffer* pBuf, SSyncNode* pNode) {
ASSERT
(
lastVer
==
pBuf
->
matchIndex
);
SyncIndex
index
=
pBuf
->
endIndex
-
1
;
(
void
)
syncLogBufferRollback
(
pBuf
,
pBuf
->
matchIndex
+
1
);
(
void
)
syncLogBufferRollback
(
pBuf
,
p
Node
,
p
Buf
->
matchIndex
+
1
);
sInfo
(
"vgId:%d, reset sync log buffer. buffer: [%"
PRId64
" %"
PRId64
" %"
PRId64
", %"
PRId64
")"
,
pNode
->
vgId
,
pBuf
->
startIndex
,
pBuf
->
commitIndex
,
pBuf
->
matchIndex
,
pBuf
->
endIndex
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录