Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
0fefc52a
M
milvus
项目概览
milvus
/
milvus
10 个月 前同步成功
通知
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 搜索 >>
未验证
提交
0fefc52a
编写于
6月 27, 2023
作者:
C
congqixia
提交者:
GitHub
6月 27, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make lookAsideBalancer checkHealth in parallel (#25155)
Signed-off-by:
N
Congqi Xia
<
congqi.xia@zilliz.com
>
上级
3a222e97
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
31 deletion
+38
-31
internal/proxy/look_aside_balancer.go
internal/proxy/look_aside_balancer.go
+38
-31
未找到文件。
internal/proxy/look_aside_balancer.go
浏览文件 @
0fefc52a
...
...
@@ -27,6 +27,7 @@ import (
"github.com/milvus-io/milvus/internal/proto/internalpb"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/metrics"
"github.com/milvus-io/milvus/pkg/util/conc"
"github.com/milvus-io/milvus/pkg/util/merr"
"github.com/milvus-io/milvus/pkg/util/paramtable"
"github.com/milvus-io/milvus/pkg/util/typeutil"
...
...
@@ -149,6 +150,7 @@ func (b *LookAsideBalancer) checkQueryNodeHealthLoop(ctx context.Context) {
ticker
:=
time
.
NewTicker
(
checkQueryNodeHealthInterval
)
defer
ticker
.
Stop
()
log
.
Info
(
"Start check query node health loop"
)
pool
:=
conc
.
NewDefaultPool
[
any
]()
for
{
select
{
case
<-
b
.
closeCh
:
...
...
@@ -157,44 +159,49 @@ func (b *LookAsideBalancer) checkQueryNodeHealthLoop(ctx context.Context) {
case
<-
ticker
.
C
:
now
:=
time
.
Now
()
.
UnixMilli
()
var
futures
[]
*
conc
.
Future
[
any
]
b
.
metricsUpdateTs
.
Range
(
func
(
node
int64
,
lastUpdateTs
int64
)
bool
{
if
now
-
lastUpdateTs
>
checkQueryNodeHealthInterval
.
Milliseconds
()
{
ctx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
100
*
time
.
Millisecond
)
defer
cancel
()
checkHealthFailed
:=
func
(
err
error
)
bool
{
log
.
RatedWarn
(
30
,
"query node check health failed, add it to unreachable nodes list"
,
zap
.
Int64
(
"nodeID"
,
node
),
zap
.
Error
(
err
))
b
.
unreachableQueryNodes
.
Insert
(
node
)
return
true
}
qn
,
err
:=
b
.
clientMgr
.
GetClient
(
ctx
,
node
)
if
err
!=
nil
{
return
checkHealthFailed
(
err
)
}
resp
,
err
:=
qn
.
GetComponentStates
(
ctx
)
if
err
!=
nil
{
return
checkHealthFailed
(
err
)
}
if
resp
.
GetState
()
.
GetStateCode
()
!=
commonpb
.
StateCode_Healthy
{
return
checkHealthFailed
(
merr
.
WrapErrNodeOffline
(
node
))
}
// check health successfully, update check health ts
b
.
metricsUpdateTs
.
Insert
(
node
,
time
.
Now
()
.
UnixMilli
())
if
b
.
unreachableQueryNodes
.
Contain
(
node
)
{
futures
=
append
(
futures
,
pool
.
Submit
(
func
()
(
any
,
error
)
{
ctx
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
100
*
time
.
Millisecond
)
defer
cancel
()
checkHealthFailed
:=
func
(
err
error
)
bool
{
log
.
RatedWarn
(
30
,
"query node check health failed, add it to unreachable nodes list"
,
zap
.
Int64
(
"nodeID"
,
node
),
zap
.
Error
(
err
))
b
.
unreachableQueryNodes
.
Insert
(
node
)
return
true
}
qn
,
err
:=
b
.
clientMgr
.
GetClient
(
ctx
,
node
)
if
err
!=
nil
{
checkHealthFailed
(
err
)
return
struct
{}{},
nil
}
resp
,
err
:=
qn
.
GetComponentStates
(
ctx
)
if
err
!=
nil
{
checkHealthFailed
(
err
)
return
struct
{}{},
nil
}
if
resp
.
GetState
()
.
GetStateCode
()
!=
commonpb
.
StateCode_Healthy
{
checkHealthFailed
(
merr
.
WrapErrNodeOffline
(
node
))
return
struct
{}{},
nil
}
// check health successfully, update check health ts
b
.
metricsUpdateTs
.
Insert
(
node
,
time
.
Now
()
.
Local
()
.
UnixMilli
())
b
.
unreachableQueryNodes
.
Remove
(
node
)
log
.
Info
(
"query node check health success, remove it from unreachable nodes list"
,
zap
.
Int64
(
"nodeID"
,
node
))
}
return
struct
{}{},
nil
}
))
}
return
true
})
conc
.
AwaitAll
(
futures
...
)
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录