Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
1e61112b
M
milvus
项目概览
milvus
/
milvus
9 个月 前同步成功
通知
260
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
1e61112b
编写于
1月 20, 2022
作者:
C
congqixia
提交者:
GitHub
1月 20, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add retry logic in pulsar consumer unsubscribe (#15284)
Signed-off-by:
N
Congqi Xia
<
congqi.xia@zilliz.com
>
上级
524d4126
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
9 addition
and
14 deletion
+9
-14
internal/datanode/data_node_test.go
internal/datanode/data_node_test.go
+0
-6
internal/datanode/flow_graph_manager_test.go
internal/datanode/flow_graph_manager_test.go
+0
-7
internal/util/mqclient/pulsar_consumer.go
internal/util/mqclient/pulsar_consumer.go
+9
-1
未找到文件。
internal/datanode/data_node_test.go
浏览文件 @
1e61112b
...
...
@@ -143,8 +143,6 @@ func TestDataNode(t *testing.T) {
err
=
node1
.
Start
()
assert
.
Nil
(
t
,
err
)
defer
func
()
{
// TODO: wait for reconnecting to Pulsar, delete sleep after Seek wouldn't lead to disconnect with Pulsar
time
.
Sleep
(
200
*
time
.
Millisecond
)
err
:=
node1
.
Stop
()
assert
.
Nil
(
t
,
err
)
}()
...
...
@@ -338,8 +336,6 @@ func TestDataNode(t *testing.T) {
if
i
<=
2
{
err
=
node
.
flowgraphManager
.
addAndStart
(
node
,
&
datapb
.
VchannelInfo
{
CollectionID
:
1
,
ChannelName
:
test
.
dmChannelName
})
assert
.
Nil
(
t
,
err
)
// TODO: wait for reconnecting to Pulsar, delete sleep after Seek wouldn't lead to disconnect with Pulsar
time
.
Sleep
(
200
*
time
.
Millisecond
)
vchanNameCh
<-
test
.
dmChannelName
}
}
...
...
@@ -413,8 +409,6 @@ func TestWatchChannel(t *testing.T) {
exist
:=
node
.
flowgraphManager
.
exist
(
ch
)
assert
.
True
(
t
,
exist
)
// TODO: wait for reconnecting to Pulsar, delete sleep after Seek wouldn't lead to disconnect with Pulsar
time
.
Sleep
(
200
*
time
.
Millisecond
)
err
=
kv
.
RemoveWithPrefix
(
fmt
.
Sprintf
(
"%s/%d"
,
Params
.
DataNodeCfg
.
ChannelWatchSubPath
,
node
.
NodeID
))
assert
.
Nil
(
t
,
err
)
//TODO there is not way to sync Release done, use sleep for now
...
...
internal/datanode/flow_graph_manager_test.go
浏览文件 @
1e61112b
...
...
@@ -19,7 +19,6 @@ package datanode
import
(
"context"
"testing"
"time"
"github.com/milvus-io/milvus/internal/proto/datapb"
"github.com/milvus-io/milvus/internal/proto/internalpb"
...
...
@@ -46,8 +45,6 @@ func TestFlowGraphManager(t *testing.T) {
fm
:=
newFlowgraphManager
()
defer
func
()
{
// TODO: wait for reconnecting to Pulsar, delete sleep after Seek wouldn't lead to disconnect with Pulsar
time
.
Sleep
(
200
*
time
.
Millisecond
)
fm
.
dropAll
()
}()
t
.
Run
(
"Test addAndStart"
,
func
(
t
*
testing
.
T
)
{
...
...
@@ -62,8 +59,6 @@ func TestFlowGraphManager(t *testing.T) {
assert
.
NoError
(
t
,
err
)
assert
.
True
(
t
,
fm
.
exist
(
vchanName
))
// TODO: wait for reconnecting to Pulsar, delete sleep after Seek wouldn't lead to disconnect with Pulsar
time
.
Sleep
(
200
*
time
.
Millisecond
)
fm
.
dropAll
()
})
...
...
@@ -79,8 +74,6 @@ func TestFlowGraphManager(t *testing.T) {
assert
.
NoError
(
t
,
err
)
assert
.
True
(
t
,
fm
.
exist
(
vchanName
))
// TODO: wait for reconnecting to Pulsar, delete sleep after Seek wouldn't lead to disconnect with Pulsar
time
.
Sleep
(
200
*
time
.
Millisecond
)
fm
.
release
(
vchanName
)
assert
.
False
(
t
,
fm
.
exist
(
vchanName
))
...
...
internal/util/mqclient/pulsar_consumer.go
浏览文件 @
1e61112b
...
...
@@ -17,11 +17,15 @@
package
mqclient
import
(
"context"
"sync"
"time"
"unsafe"
"github.com/apache/pulsar-client-go/pulsar"
"github.com/milvus-io/milvus/internal/log"
"github.com/milvus-io/milvus/internal/util/retry"
"go.uber.org/zap"
)
// PulsarConsumer consumes from pulsar
...
...
@@ -108,8 +112,12 @@ func (pc *PulsarConsumer) Close() {
pc
.
closeOnce
.
Do
(
func
()
{
defer
pc
.
c
.
Close
()
// Unsubscribe for the consumer
err
:=
pc
.
c
.
Unsubscribe
()
err
:=
retry
.
Do
(
context
.
Background
(),
func
()
error
{
//TODO need to check error retryable
return
pc
.
c
.
Unsubscribe
()
},
retry
.
MaxSleepTime
(
50
*
time
.
Millisecond
),
retry
.
Attempts
(
3
))
if
err
!=
nil
{
log
.
Error
(
"failed to unsubscribe"
,
zap
.
String
(
"subscription"
,
pc
.
Subscription
()),
zap
.
Error
(
err
))
panic
(
err
)
}
close
(
pc
.
closeCh
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录