Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
c64fbb59
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
c64fbb59
编写于
12月 28, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: support_vnodes and the max supported vgroups mis-match
上级
6ab879ab
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
3 deletion
+20
-3
source/dnode/mnode/impl/inc/mndDef.h
source/dnode/mnode/impl/inc/mndDef.h
+1
-0
source/dnode/mnode/impl/src/mndVgroup.c
source/dnode/mnode/impl/src/mndVgroup.c
+19
-3
未找到文件。
source/dnode/mnode/impl/inc/mndDef.h
浏览文件 @
c64fbb59
...
...
@@ -193,6 +193,7 @@ typedef struct {
int64_t
lastAccessTime
;
int32_t
accessTimes
;
int32_t
numOfVnodes
;
int32_t
numOfOtherNodes
;
int32_t
numOfSupportVnodes
;
float
numOfCores
;
int64_t
memTotal
;
...
...
source/dnode/mnode/impl/src/mndVgroup.c
浏览文件 @
c64fbb59
...
...
@@ -425,6 +425,7 @@ void *mndBuildDropVnodeReq(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVgOb
static
bool
mndResetDnodesArrayFp
(
SMnode
*
pMnode
,
void
*
pObj
,
void
*
p1
,
void
*
p2
,
void
*
p3
)
{
SDnodeObj
*
pDnode
=
pObj
;
pDnode
->
numOfVnodes
=
0
;
pDnode
->
numOfOtherNodes
=
0
;
return
true
;
}
...
...
@@ -447,7 +448,7 @@ static bool mndBuildDnodesArrayFp(SMnode *pMnode, void *pObj, void *p1, void *p2
pDnode
->
numOfVnodes
,
pDnode
->
numOfSupportVnodes
,
isMnode
,
online
,
pDnode
->
memAvail
,
pDnode
->
memUsed
);
if
(
isMnode
)
{
pDnode
->
numOf
Vn
odes
++
;
pDnode
->
numOf
OtherN
odes
++
;
}
if
(
online
&&
pDnode
->
numOfSupportVnodes
>
0
)
{
...
...
@@ -468,14 +469,24 @@ SArray *mndBuildDnodesArray(SMnode *pMnode, int32_t exceptDnodeId) {
sdbTraverse
(
pSdb
,
SDB_DNODE
,
mndResetDnodesArrayFp
,
NULL
,
NULL
,
NULL
);
sdbTraverse
(
pSdb
,
SDB_DNODE
,
mndBuildDnodesArrayFp
,
pArray
,
&
exceptDnodeId
,
NULL
);
mDebug
(
"build %d dnodes array"
,
(
int32_t
)
taosArrayGetSize
(
pArray
));
for
(
int32_t
i
=
0
;
i
<
(
int32_t
)
taosArrayGetSize
(
pArray
);
++
i
)
{
SDnodeObj
*
pDnode
=
taosArrayGet
(
pArray
,
i
);
mDebug
(
"dnode:%d, vnodes:%d others:%d"
,
pDnode
->
id
,
pDnode
->
numOfVnodes
,
pDnode
->
numOfOtherNodes
);
}
return
pArray
;
}
static
int32_t
mndCompareDnodeId
(
int32_t
*
dnode1Id
,
int32_t
*
dnode2Id
)
{
return
*
dnode1Id
>=
*
dnode2Id
?
1
:
0
;
}
static
float
mndGetDnodeScore
(
SDnodeObj
*
pDnode
)
{
return
((
float
)
pDnode
->
numOfVnodes
+
(
float
)
pDnode
->
numOfOtherNodes
*
0
.
9
)
/
pDnode
->
numOfSupportVnodes
;
}
static
int32_t
mndCompareDnodeVnodes
(
SDnodeObj
*
pDnode1
,
SDnodeObj
*
pDnode2
)
{
float
d1Score
=
(
float
)
pDnode1
->
numOfVnodes
/
pDnode1
->
numOfSupportVnodes
;
float
d2Score
=
(
float
)
pDnode2
->
numOfVnodes
/
pDnode2
->
numOfSupportVnodes
;
float
d1Score
=
mndGetDnodeScore
(
pDnode1
)
;
float
d2Score
=
mndGetDnodeScore
(
pDnode2
)
;
return
d1Score
>=
d2Score
?
1
:
0
;
}
...
...
@@ -494,7 +505,12 @@ static int32_t mndGetAvailableDnode(SMnode *pMnode, SDbObj *pDb, SVgObj *pVgroup
int32_t
allocedVnodes
=
0
;
void
*
pIter
=
NULL
;
mDebug
(
"start to sort %d dnodes"
,
(
int32_t
)
taosArrayGetSize
(
pArray
));
taosArraySort
(
pArray
,
(
__compar_fn_t
)
mndCompareDnodeVnodes
);
for
(
int32_t
i
=
0
;
i
<
(
int32_t
)
taosArrayGetSize
(
pArray
);
++
i
)
{
SDnodeObj
*
pDnode
=
taosArrayGet
(
pArray
,
i
);
mDebug
(
"dnode:%d, score:%f"
,
pDnode
->
id
,
mndGetDnodeScore
(
pDnode
));
}
int32_t
size
=
taosArrayGetSize
(
pArray
);
if
(
size
<
pVgroup
->
replica
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录