Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
c0a835ff
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
c0a835ff
编写于
3月 06, 2023
作者:
B
Benguang Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: rotate mnode epSet on sending dnode status failure
上级
56eba758
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
0 deletion
+24
-0
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
source/dnode/mgmt/mgmt_dnode/src/dmHandle.c
+1
-0
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/dnode/mgmt/mgmt_dnode/src/dmHandle.c
浏览文件 @
c0a835ff
...
@@ -129,6 +129,7 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
...
@@ -129,6 +129,7 @@ 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
)
{
dmRotateMnodeEpSet
(
pMgmt
->
pData
);
char
tbuf
[
256
];
char
tbuf
[
256
];
dmEpSetToStr
(
tbuf
,
sizeof
(
tbuf
),
&
epSet
);
dmEpSetToStr
(
tbuf
,
sizeof
(
tbuf
),
&
epSet
);
dError
(
"failed to send status req since %s, epSet:%s, inUse:%d"
,
tstrerror
(
rpcRsp
.
code
),
tbuf
,
epSet
.
inUse
);
dError
(
"failed to send status req since %s, epSet:%s, inUse:%d"
,
tstrerror
(
rpcRsp
.
code
),
tbuf
,
epSet
.
inUse
);
...
...
source/dnode/mgmt/node_util/inc/dmUtil.h
浏览文件 @
c0a835ff
...
@@ -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
浏览文件 @
c0a835ff
...
@@ -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
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录