Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
000c5ff3
M
milvus
项目概览
milvus
/
milvus
大约 1 年 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
000c5ff3
编写于
5月 10, 2022
作者:
X
Xiaofan
提交者:
GitHub
5月 10, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix msgstream unsubscription (#16883)
Signed-off-by:
N
xiaofan-luan
<
xiaofan.luan@zilliz.com
>
上级
34833680
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
16 addition
and
3 deletion
+16
-3
internal/mq/msgstream/mq_msgstream.go
internal/mq/msgstream/mq_msgstream.go
+3
-1
internal/mq/msgstream/mqwrapper/pulsar/pulsar_consumer.go
internal/mq/msgstream/mqwrapper/pulsar/pulsar_consumer.go
+6
-0
internal/querycoord/meta.go
internal/querycoord/meta.go
+7
-2
未找到文件。
internal/mq/msgstream/mq_msgstream.go
浏览文件 @
000c5ff3
...
@@ -167,11 +167,13 @@ func (ms *mqMsgStream) AsConsumerWithPosition(channels []string, subName string,
...
@@ -167,11 +167,13 @@ func (ms *mqMsgStream) AsConsumerWithPosition(channels []string, subName string,
ms
.
consumerChannels
=
append
(
ms
.
consumerChannels
,
channel
)
ms
.
consumerChannels
=
append
(
ms
.
consumerChannels
,
channel
)
return
nil
return
nil
}
}
err
:=
retry
.
Do
(
context
.
TODO
(),
fn
,
retry
.
Attempts
(
20
),
retry
.
Sleep
(
time
.
Millisecond
*
200
),
retry
.
MaxSleepTime
(
5
*
time
.
Second
))
// TODO if know the former subscribe is invalid, should we use pulsarctl to accelerate recovery speed
err
:=
retry
.
Do
(
context
.
TODO
(),
fn
,
retry
.
Attempts
(
50
),
retry
.
Sleep
(
time
.
Millisecond
*
200
),
retry
.
MaxSleepTime
(
5
*
time
.
Second
))
if
err
!=
nil
{
if
err
!=
nil
{
errMsg
:=
"Failed to create consumer "
+
channel
+
", error = "
+
err
.
Error
()
errMsg
:=
"Failed to create consumer "
+
channel
+
", error = "
+
err
.
Error
()
panic
(
errMsg
)
panic
(
errMsg
)
}
}
log
.
Info
(
"Successfully create consumer"
,
zap
.
String
(
"channel"
,
channel
),
zap
.
String
(
"subname"
,
subName
))
}
}
}
}
...
...
internal/mq/msgstream/mqwrapper/pulsar/pulsar_consumer.go
浏览文件 @
000c5ff3
...
@@ -115,6 +115,12 @@ func (pc *Consumer) Close() {
...
@@ -115,6 +115,12 @@ func (pc *Consumer) Close() {
// Unsubscribe for the consumer
// Unsubscribe for the consumer
fn
:=
func
()
error
{
fn
:=
func
()
error
{
err
:=
pc
.
c
.
Unsubscribe
()
err
:=
pc
.
c
.
Unsubscribe
()
if
isPulsarError
(
err
,
pulsar
.
SubscriptionNotFound
)
||
isPulsarError
(
err
,
pulsar
.
ConsumerNotFound
)
{
log
.
Warn
(
"failed to find consumer, skip unsubscribe"
,
zap
.
String
(
"subscription"
,
pc
.
Subscription
()),
zap
.
Error
(
err
))
return
nil
}
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
internal/querycoord/meta.go
浏览文件 @
000c5ff3
...
@@ -1121,6 +1121,7 @@ func (m *MetaReplica) getWatchedChannelsByNodeID(nodeID int64) *querypb.Unsubscr
...
@@ -1121,6 +1121,7 @@ func (m *MetaReplica) getWatchedChannelsByNodeID(nodeID int64) *querypb.Unsubscr
// 1. find all the search/dmChannel/deltaChannel the node has watched
// 1. find all the search/dmChannel/deltaChannel the node has watched
colID2DmChannels
:=
make
(
map
[
UniqueID
][]
string
)
colID2DmChannels
:=
make
(
map
[
UniqueID
][]
string
)
colID2DeltaChannels
:=
make
(
map
[
UniqueID
][]
string
)
colID2DeltaChannels
:=
make
(
map
[
UniqueID
][]
string
)
// TODO remove colID2QueryChannel since it's not used
colID2QueryChannel
:=
make
(
map
[
UniqueID
]
string
)
colID2QueryChannel
:=
make
(
map
[
UniqueID
]
string
)
dmChannelInfos
:=
m
.
getDmChannelInfosByNodeID
(
nodeID
)
dmChannelInfos
:=
m
.
getDmChannelInfosByNodeID
(
nodeID
)
// get dmChannel/search channel the node has watched
// get dmChannel/search channel the node has watched
...
@@ -1137,9 +1138,13 @@ func (m *MetaReplica) getWatchedChannelsByNodeID(nodeID int64) *querypb.Unsubscr
...
@@ -1137,9 +1138,13 @@ func (m *MetaReplica) getWatchedChannelsByNodeID(nodeID int64) *querypb.Unsubscr
}
}
}
}
segmentInfos
:=
m
.
getSegmentInfosByNode
(
nodeID
)
segmentInfos
:=
m
.
getSegmentInfosByNode
(
nodeID
)
// get delta/search channel the node has watched
colIDs
:=
make
(
map
[
UniqueID
]
bool
)
// iterate through segments to find unique collection ids
for
_
,
segmentInfo
:=
range
segmentInfos
{
for
_
,
segmentInfo
:=
range
segmentInfos
{
collectionID
:=
segmentInfo
.
CollectionID
colIDs
[
segmentInfo
.
CollectionID
]
=
true
}
// get delta/search channel the node has watched
for
collectionID
:=
range
colIDs
{
if
_
,
ok
:=
colID2DeltaChannels
[
collectionID
];
!
ok
{
if
_
,
ok
:=
colID2DeltaChannels
[
collectionID
];
!
ok
{
deltaChanelInfos
,
err
:=
m
.
getDeltaChannelsByCollectionID
(
collectionID
)
deltaChanelInfos
,
err
:=
m
.
getDeltaChannelsByCollectionID
(
collectionID
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录