Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0874b71b
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
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看板
未验证
提交
0874b71b
编写于
3月 07, 2023
作者:
S
Shengliang Guan
提交者:
GitHub
3月 07, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #20300 from taosdata/FIX/TD-23009-main
enh: rotate mnode epSet on sending dnode status req failure
上级
b11ac8aa
62d4729e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
38 addition
and
6 deletion
+38
-6
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
+14
-5
source/dnode/mgmt/node_util/inc/dmUtil.h
source/dnode/mgmt/node_util/inc/dmUtil.h
+1
-0
source/dnode/mgmt/node_util/src/dmEps.c
source/dnode/mgmt/node_util/src/dmEps.c
+22
-0
source/libs/sync/src/syncRaftStore.c
source/libs/sync/src/syncRaftStore.c
+1
-1
未找到文件。
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
浏览文件 @
0874b71b
...
@@ -61,6 +61,16 @@ static void dmProcessStatusRsp(SDnodeMgmt *pMgmt, SRpcMsg *pRsp) {
...
@@ -61,6 +61,16 @@ static void dmProcessStatusRsp(SDnodeMgmt *pMgmt, SRpcMsg *pRsp) {
rpcFreeCont
(
pRsp
->
pCont
);
rpcFreeCont
(
pRsp
->
pCont
);
}
}
void
dmEpSetToStr
(
char
*
buf
,
int32_t
len
,
SEpSet
*
epSet
)
{
int32_t
n
=
0
;
n
+=
snprintf
(
buf
+
n
,
len
-
n
,
"%s"
,
"{"
);
for
(
int
i
=
0
;
i
<
epSet
->
numOfEps
;
i
++
)
{
n
+=
snprintf
(
buf
+
n
,
len
-
n
,
"%s:%d%s"
,
epSet
->
eps
[
i
].
fqdn
,
epSet
->
eps
[
i
].
port
,
(
i
+
1
<
epSet
->
numOfEps
?
", "
:
""
));
}
n
+=
snprintf
(
buf
+
n
,
len
-
n
,
"%s"
,
"}"
);
}
void
dmSendStatusReq
(
SDnodeMgmt
*
pMgmt
)
{
void
dmSendStatusReq
(
SDnodeMgmt
*
pMgmt
)
{
SStatusReq
req
=
{
0
};
SStatusReq
req
=
{
0
};
...
@@ -119,11 +129,10 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
...
@@ -119,11 +129,10 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
dmGetMnodeEpSet
(
pMgmt
->
pData
,
&
epSet
);
dmGetMnodeEpSet
(
pMgmt
->
pData
,
&
epSet
);
rpcSendRecv
(
pMgmt
->
msgCb
.
clientRpc
,
&
epSet
,
&
rpcMsg
,
&
rpcRsp
);
rpcSendRecv
(
pMgmt
->
msgCb
.
clientRpc
,
&
epSet
,
&
rpcMsg
,
&
rpcRsp
);
if
(
rpcRsp
.
code
!=
0
)
{
if
(
rpcRsp
.
code
!=
0
)
{
dError
(
"failed to send status req since %s, numOfEps:%d inUse:%d"
,
tstrerror
(
rpcRsp
.
code
),
epSet
.
numOfEps
,
dmRotateMnodeEpSet
(
pMgmt
->
pData
);
epSet
.
inUse
);
char
tbuf
[
256
];
for
(
int32_t
i
=
0
;
i
<
epSet
.
numOfEps
;
++
i
)
{
dmEpSetToStr
(
tbuf
,
sizeof
(
tbuf
),
&
epSet
);
dDebug
(
"index:%d, mnode ep:%s:%u"
,
i
,
epSet
.
eps
[
i
].
fqdn
,
epSet
.
eps
[
i
].
port
);
dError
(
"failed to send status req since %s, epSet:%s, inUse:%d"
,
tstrerror
(
rpcRsp
.
code
),
tbuf
,
epSet
.
inUse
);
}
}
}
dmProcessStatusRsp
(
pMgmt
,
&
rpcRsp
);
dmProcessStatusRsp
(
pMgmt
,
&
rpcRsp
);
}
}
...
...
source/dnode/mgmt/node_util/inc/dmUtil.h
浏览文件 @
0874b71b
...
@@ -166,6 +166,7 @@ int32_t dmReadEps(SDnodeData *pData);
...
@@ -166,6 +166,7 @@ int32_t dmReadEps(SDnodeData *pData);
int32_t
dmWriteEps
(
SDnodeData
*
pData
);
int32_t
dmWriteEps
(
SDnodeData
*
pData
);
void
dmUpdateEps
(
SDnodeData
*
pData
,
SArray
*
pDnodeEps
);
void
dmUpdateEps
(
SDnodeData
*
pData
,
SArray
*
pDnodeEps
);
void
dmGetMnodeEpSet
(
SDnodeData
*
pData
,
SEpSet
*
pEpSet
);
void
dmGetMnodeEpSet
(
SDnodeData
*
pData
,
SEpSet
*
pEpSet
);
void
dmRotateMnodeEpSet
(
SDnodeData
*
pData
);
void
dmGetMnodeEpSetForRedirect
(
SDnodeData
*
pData
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
void
dmGetMnodeEpSetForRedirect
(
SDnodeData
*
pData
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
void
dmSetMnodeEpSet
(
SDnodeData
*
pData
,
SEpSet
*
pEpSet
);
void
dmSetMnodeEpSet
(
SDnodeData
*
pData
,
SEpSet
*
pEpSet
);
bool
dmUpdateDnodeInfo
(
void
*
pData
,
int32_t
*
dnodeId
,
int64_t
*
clusterId
,
char
*
fqdn
,
uint16_t
*
port
);
bool
dmUpdateDnodeInfo
(
void
*
pData
,
int32_t
*
dnodeId
,
int64_t
*
clusterId
,
char
*
fqdn
,
uint16_t
*
port
);
...
...
source/dnode/mgmt/node_util/src/dmEps.c
浏览文件 @
0874b71b
...
@@ -325,6 +325,28 @@ void dmGetMnodeEpSet(SDnodeData *pData, SEpSet *pEpSet) {
...
@@ -325,6 +325,28 @@ void dmGetMnodeEpSet(SDnodeData *pData, SEpSet *pEpSet) {
taosThreadRwlockUnlock
(
&
pData
->
lock
);
taosThreadRwlockUnlock
(
&
pData
->
lock
);
}
}
static
FORCE_INLINE
void
dmSwapEps
(
SEp
*
epLhs
,
SEp
*
epRhs
)
{
SEp
epTmp
;
epTmp
.
port
=
epLhs
->
port
;
tstrncpy
(
epTmp
.
fqdn
,
epLhs
->
fqdn
,
tListLen
(
epTmp
.
fqdn
));
epLhs
->
port
=
epRhs
->
port
;
tstrncpy
(
epLhs
->
fqdn
,
epRhs
->
fqdn
,
tListLen
(
epLhs
->
fqdn
));
epRhs
->
port
=
epTmp
.
port
;
tstrncpy
(
epRhs
->
fqdn
,
epTmp
.
fqdn
,
tListLen
(
epRhs
->
fqdn
));
}
void
dmRotateMnodeEpSet
(
SDnodeData
*
pData
)
{
taosThreadRwlockRdlock
(
&
pData
->
lock
);
SEpSet
*
pEpSet
=
&
pData
->
mnodeEps
;
for
(
int
i
=
1
;
i
<
pEpSet
->
numOfEps
;
i
++
)
{
dmSwapEps
(
&
pEpSet
->
eps
[
i
-
1
],
&
pEpSet
->
eps
[
i
]);
}
taosThreadRwlockUnlock
(
&
pData
->
lock
);
}
void
dmGetMnodeEpSetForRedirect
(
SDnodeData
*
pData
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
void
dmGetMnodeEpSetForRedirect
(
SDnodeData
*
pData
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
dmGetMnodeEpSet
(
pData
,
pEpSet
);
dmGetMnodeEpSet
(
pData
,
pEpSet
);
dTrace
(
"msg is redirected, handle:%p num:%d use:%d"
,
pMsg
->
info
.
handle
,
pEpSet
->
numOfEps
,
pEpSet
->
inUse
);
dTrace
(
"msg is redirected, handle:%p num:%d use:%d"
,
pMsg
->
info
.
handle
,
pEpSet
->
numOfEps
,
pEpSet
->
inUse
);
...
...
source/libs/sync/src/syncRaftStore.c
浏览文件 @
0874b71b
...
@@ -139,7 +139,7 @@ int32_t raftStoreWriteFile(SSyncNode *pNode) {
...
@@ -139,7 +139,7 @@ int32_t raftStoreWriteFile(SSyncNode *pNode) {
if
(
taosRenameFile
(
file
,
realfile
)
!=
0
)
goto
_OVER
;
if
(
taosRenameFile
(
file
,
realfile
)
!=
0
)
goto
_OVER
;
code
=
0
;
code
=
0
;
sInfo
(
"vgId:%d, succeed to write raft store file:%s,
len:%d"
,
pNode
->
vgId
,
realfile
,
len
);
sInfo
(
"vgId:%d, succeed to write raft store file:%s,
term:%"
PRId64
,
pNode
->
vgId
,
realfile
,
pStore
->
currentTerm
);
_OVER:
_OVER:
if
(
pJson
!=
NULL
)
tjsonDelete
(
pJson
);
if
(
pJson
!=
NULL
)
tjsonDelete
(
pJson
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录