Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
58ea5563
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看板
提交
58ea5563
编写于
8月 16, 2022
作者:
L
Liu Jicong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(tmq): rebalance
上级
b2b0f2f8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
10 deletion
+22
-10
source/dnode/mnode/impl/src/mndSubscribe.c
source/dnode/mnode/impl/src/mndSubscribe.c
+22
-10
未找到文件。
source/dnode/mnode/impl/src/mndSubscribe.c
浏览文件 @
58ea5563
...
...
@@ -356,7 +356,7 @@ static int32_t mndDoRebalance(SMnode *pMnode, const SMqRebInputObj *pInput, SMqR
taosArrayPush
(
pConsumerEp
->
vgs
,
&
pRebVg
->
pVgEp
);
pRebVg
->
newConsumerId
=
pConsumerEp
->
consumerId
;
taosArrayPush
(
pOutput
->
rebVgs
,
pRebVg
);
mInfo
(
"mq rebalance: add vgId:%d to consumer:%"
PRId64
"
,(second scan
)"
,
pRebVg
->
pVgEp
->
vgId
,
mInfo
(
"mq rebalance: add vgId:%d to consumer:%"
PRId64
"
(second scan) (not enough
)"
,
pRebVg
->
pVgEp
->
vgId
,
pConsumerEp
->
consumerId
);
}
}
...
...
@@ -365,22 +365,34 @@ static int32_t mndDoRebalance(SMnode *pMnode, const SMqRebInputObj *pInput, SMqR
if
(
taosHashGetSize
(
pOutput
->
pSub
->
consumerHash
)
!=
0
)
{
// if has consumer, assign all left vg
while
(
1
)
{
SMqConsumerEp
*
pConsumerEp
=
NULL
;
pRemovedIter
=
taosHashIterate
(
pHash
,
pRemovedIter
);
if
(
pRemovedIter
==
NULL
)
break
;
pIter
=
taosHashIterate
(
pOutput
->
pSub
->
consumerHash
,
pIter
);
ASSERT
(
pIter
);
if
(
pRemovedIter
==
NULL
)
{
if
(
pIter
!=
NULL
)
{
taosHashCancelIterate
(
pOutput
->
pSub
->
consumerHash
,
pIter
);
pIter
=
NULL
;
}
break
;
}
while
(
1
)
{
pIter
=
taosHashIterate
(
pOutput
->
pSub
->
consumerHash
,
pIter
);
ASSERT
(
pIter
);
pConsumerEp
=
(
SMqConsumerEp
*
)
pIter
;
ASSERT
(
pConsumerEp
->
consumerId
>
0
);
if
(
taosArrayGetSize
(
pConsumerEp
->
vgs
)
==
minVgCnt
+
1
)
{
continue
;
}
}
pRebVg
=
(
SMqRebOutputVg
*
)
pRemovedIter
;
SMqConsumerEp
*
pConsumerEp
=
(
SMqConsumerEp
*
)
pIter
;
ASSERT
(
pConsumerEp
->
consumerId
>
0
);
taosArrayPush
(
pConsumerEp
->
vgs
,
&
pRebVg
->
pVgEp
);
pRebVg
->
newConsumerId
=
pConsumerEp
->
consumerId
;
if
(
pRebVg
->
newConsumerId
==
pRebVg
->
oldConsumerId
)
{
mInfo
(
"mq rebalance: skip vg %d for same consumer:%"
PRId64
"
,
(second scan)"
,
pRebVg
->
pVgEp
->
vgId
,
mInfo
(
"mq rebalance: skip vg %d for same consumer:%"
PRId64
"
(second scan)"
,
pRebVg
->
pVgEp
->
vgId
,
pConsumerEp
->
consumerId
);
continue
;
}
taosArrayPush
(
pOutput
->
rebVgs
,
pRebVg
);
mInfo
(
"mq rebalance: add vgId:%d to consumer:%"
PRId64
"
,(second scan
)"
,
pRebVg
->
pVgEp
->
vgId
,
mInfo
(
"mq rebalance: add vgId:%d to consumer:%"
PRId64
"
(second scan) (unassigned
)"
,
pRebVg
->
pVgEp
->
vgId
,
pConsumerEp
->
consumerId
);
}
}
else
{
...
...
@@ -571,7 +583,7 @@ static int32_t mndProcessRebalanceReq(SRpcMsg *pMsg) {
SMqTopicObj
*
pTopic
=
mndAcquireTopic
(
pMnode
,
topic
);
/*ASSERT(pTopic);*/
if
(
pTopic
==
NULL
)
{
mError
(
"
rebalance %s failed since topic %s was dropped
, abort"
,
pRebInfo
->
key
,
topic
);
mError
(
"
mq rebalance %s failed since topic %s not exist
, abort"
,
pRebInfo
->
key
,
topic
);
continue
;
}
taosRLockLatch
(
&
pTopic
->
lock
);
...
...
@@ -601,7 +613,7 @@ static int32_t mndProcessRebalanceReq(SRpcMsg *pMsg) {
// TODO replace assert with error check
if
(
mndPersistRebResult
(
pMnode
,
pMsg
,
&
rebOutput
)
<
0
)
{
mError
(
"persist rebalance output error, possibly vnode splitted or dropped"
);
mError
(
"
mq rebalance
persist rebalance output error, possibly vnode splitted or dropped"
);
}
taosArrayDestroy
(
pRebInfo
->
lostConsumers
);
taosArrayDestroy
(
pRebInfo
->
newConsumers
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录