Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
1c274de3
M
milvus
项目概览
milvus
/
milvus
11 个月 前同步成功
通知
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 搜索 >>
提交
1c274de3
编写于
3月 25, 2021
作者:
B
bigsheeper
提交者:
yefu.chen
3月 25, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve mutex in queryservice
Signed-off-by:
N
bigsheeper
<
yihao.dai@zilliz.com
>
上级
dfb68a7e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
12 deletion
+26
-12
internal/queryservice/querynode.go
internal/queryservice/querynode.go
+22
-2
internal/queryservice/queryservice.go
internal/queryservice/queryservice.go
+4
-10
未找到文件。
internal/queryservice/querynode.go
浏览文件 @
1c274de3
...
...
@@ -44,10 +44,14 @@ func (qn *queryNodeInfo) AddDmChannels(channels []string, collectionID UniqueID)
qn
.
channels2Col
[
collectionID
]
=
append
(
qn
.
channels2Col
[
collectionID
],
channels
...
)
}
func
(
qn
*
queryNodeInfo
)
get
Channels2Col
()
map
[
UniqueID
][]
string
{
func
(
qn
*
queryNodeInfo
)
get
NumChannels
()
int
{
qn
.
mu
.
Lock
()
defer
qn
.
mu
.
Unlock
()
return
qn
.
channels2Col
numChannels
:=
0
for
_
,
chs
:=
range
qn
.
channels2Col
{
numChannels
+=
len
(
chs
)
}
return
numChannels
}
func
(
qn
*
queryNodeInfo
)
AddSegments
(
segmentIDs
[]
UniqueID
,
collectionID
UniqueID
)
{
...
...
@@ -60,6 +64,22 @@ func (qn *queryNodeInfo) AddSegments(segmentIDs []UniqueID, collectionID UniqueI
qn
.
segments
[
collectionID
]
=
append
(
qn
.
segments
[
collectionID
],
segmentIDs
...
)
}
func
(
qn
*
queryNodeInfo
)
getSegmentsLength
()
int
{
qn
.
mu
.
Lock
()
defer
qn
.
mu
.
Unlock
()
return
len
(
qn
.
segments
)
}
func
(
qn
*
queryNodeInfo
)
getNumSegments
()
int
{
qn
.
mu
.
Lock
()
defer
qn
.
mu
.
Unlock
()
numSegments
:=
0
for
_
,
ids
:=
range
qn
.
segments
{
numSegments
+=
len
(
ids
)
}
return
numSegments
}
func
(
qn
*
queryNodeInfo
)
AddQueryChannel
(
ctx
context
.
Context
,
in
*
querypb
.
AddQueryChannelRequest
)
(
*
commonpb
.
Status
,
error
)
{
return
qn
.
client
.
AddQueryChannel
(
ctx
,
in
)
}
...
...
internal/queryservice/queryservice.go
浏览文件 @
1c274de3
...
...
@@ -756,10 +756,7 @@ func (qs *QueryService) watchDmChannels(dbID UniqueID, collectionID UniqueID) er
func
(
qs
*
QueryService
)
shuffleChannelsToQueryNode
(
dmChannels
[]
string
)
map
[
int64
][]
string
{
maxNumChannels
:=
0
for
_
,
node
:=
range
qs
.
queryNodes
{
numChannels
:=
0
for
_
,
chs
:=
range
node
.
getChannels2Col
()
{
numChannels
+=
len
(
chs
)
}
numChannels
:=
node
.
getNumChannels
()
if
numChannels
>
maxNumChannels
{
maxNumChannels
=
numChannels
}
...
...
@@ -771,7 +768,7 @@ func (qs *QueryService) shuffleChannelsToQueryNode(dmChannels []string) map[int6
lastOffset
:=
offset
if
!
loopAll
{
for
id
,
node
:=
range
qs
.
queryNodes
{
if
len
(
node
.
segments
)
>=
maxNumChannels
{
if
node
.
getSegmentsLength
(
)
>=
maxNumChannels
{
continue
}
if
_
,
ok
:=
res
[
id
];
!
ok
{
...
...
@@ -804,10 +801,7 @@ func (qs *QueryService) shuffleChannelsToQueryNode(dmChannels []string) map[int6
func
(
qs
*
QueryService
)
shuffleSegmentsToQueryNode
(
segmentIDs
[]
UniqueID
)
map
[
int64
][]
UniqueID
{
maxNumSegments
:=
0
for
_
,
node
:=
range
qs
.
queryNodes
{
numSegments
:=
0
for
_
,
ids
:=
range
node
.
segments
{
numSegments
+=
len
(
ids
)
}
numSegments
:=
node
.
getNumSegments
()
if
numSegments
>
maxNumSegments
{
maxNumSegments
=
numSegments
}
...
...
@@ -828,7 +822,7 @@ func (qs *QueryService) shuffleSegmentsToQueryNode(segmentIDs []UniqueID) map[in
lastOffset
:=
offset
if
!
loopAll
{
for
id
,
node
:=
range
qs
.
queryNodes
{
if
len
(
node
.
segments
)
>=
maxNumSegments
{
if
node
.
getSegmentsLength
(
)
>=
maxNumSegments
{
continue
}
if
_
,
ok
:=
res
[
id
];
!
ok
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录