Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
f21c0ef2
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 搜索 >>
提交
f21c0ef2
编写于
11月 26, 2020
作者:
B
bigsheeper
提交者:
yefu.chen
11月 26, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reduce cpu usage
Signed-off-by:
N
bigsheeper
<
yihao.dai@zilliz.com
>
上级
72a7af3f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
51 addition
and
26 deletion
+51
-26
internal/msgstream/msgstream.go
internal/msgstream/msgstream.go
+44
-24
internal/querynode/search_service.go
internal/querynode/search_service.go
+7
-2
未找到文件。
internal/msgstream/msgstream.go
浏览文件 @
f21c0ef2
...
...
@@ -3,6 +3,7 @@ package msgstream
import
(
"context"
"log"
"reflect"
"sync"
"github.com/apache/pulsar-client-go/pulsar"
...
...
@@ -111,9 +112,6 @@ func (ms *PulsarMsgStream) Start() {
func
(
ms
*
PulsarMsgStream
)
Close
()
{
ms
.
streamCancel
()
if
ms
.
wait
!=
nil
{
ms
.
wait
.
Wait
()
}
for
_
,
producer
:=
range
ms
.
producers
{
if
producer
!=
nil
{
...
...
@@ -227,37 +225,59 @@ func (ms *PulsarMsgStream) Consume() *MsgPack {
func
(
ms
*
PulsarMsgStream
)
bufMsgPackToChannel
()
{
defer
ms
.
wait
.
Done
()
cases
:=
make
([]
reflect
.
SelectCase
,
len
(
ms
.
consumers
))
for
i
:=
0
;
i
<
len
(
ms
.
consumers
);
i
++
{
ch
:=
(
*
ms
.
consumers
[
i
])
.
Chan
()
cases
[
i
]
=
reflect
.
SelectCase
{
Dir
:
reflect
.
SelectRecv
,
Chan
:
reflect
.
ValueOf
(
ch
)}
}
for
{
select
{
case
<-
ms
.
ctx
.
Done
()
:
return
default
:
tsMsgList
:=
make
([]
TsMsg
,
0
)
for
i
:=
0
;
i
<
len
(
ms
.
consumers
);
i
++
{
consumerChan
:=
(
*
ms
.
consumers
[
i
])
.
Chan
()
chanLen
:=
len
(
consumerChan
)
for
l
:=
0
;
l
<
chanLen
;
l
++
{
pulsarMsg
,
ok
:=
<-
consumerChan
if
!
ok
{
log
.
Printf
(
"channel closed"
)
return
}
(
*
ms
.
consumers
[
i
])
.
AckID
(
pulsarMsg
.
ID
())
headerMsg
:=
internalPb
.
MsgHeader
{}
err
:=
proto
.
Unmarshal
(
pulsarMsg
.
Payload
(),
&
headerMsg
)
if
err
!=
nil
{
log
.
Printf
(
"Failed to unmarshal message header, error = %v"
,
err
)
continue
}
tsMsg
,
err
:=
ms
.
unmarshal
.
Unmarshal
(
pulsarMsg
.
Payload
(),
headerMsg
.
MsgType
)
if
err
!=
nil
{
log
.
Printf
(
"Failed to unmarshal tsMsg, error = %v"
,
err
)
continue
for
{
chosen
,
value
,
ok
:=
reflect
.
Select
(
cases
)
if
!
ok
{
log
.
Printf
(
"channel closed"
)
return
}
pulsarMsg
,
ok
:=
value
.
Interface
()
.
(
pulsar
.
ConsumerMessage
)
if
!
ok
{
log
.
Printf
(
"type assertion failed, not consumer message type"
)
continue
}
(
*
ms
.
consumers
[
chosen
])
.
AckID
(
pulsarMsg
.
ID
())
headerMsg
:=
internalPb
.
MsgHeader
{}
err
:=
proto
.
Unmarshal
(
pulsarMsg
.
Payload
(),
&
headerMsg
)
if
err
!=
nil
{
log
.
Printf
(
"Failed to unmarshal message header, error = %v"
,
err
)
continue
}
tsMsg
,
err
:=
ms
.
unmarshal
.
Unmarshal
(
pulsarMsg
.
Payload
(),
headerMsg
.
MsgType
)
if
err
!=
nil
{
log
.
Printf
(
"Failed to unmarshal tsMsg, error = %v"
,
err
)
continue
}
tsMsgList
=
append
(
tsMsgList
,
tsMsg
)
noMoreMessage
:=
true
for
i
:=
0
;
i
<
len
(
ms
.
consumers
);
i
++
{
if
len
((
*
ms
.
consumers
[
i
])
.
Chan
())
>
0
{
noMoreMessage
=
false
}
tsMsgList
=
append
(
tsMsgList
,
tsMsg
)
}
if
noMoreMessage
{
break
}
}
if
len
(
tsMsgList
)
>
0
{
msgPack
:=
MsgPack
{
Msgs
:
tsMsgList
}
ms
.
receiveBuf
<-
&
msgPack
...
...
internal/querynode/search_service.go
浏览文件 @
f21c0ef2
...
...
@@ -172,15 +172,20 @@ func (ss *searchService) doUnsolvedMsgSearch() {
ss
.
unsolvedMsg
=
append
(
ss
.
unsolvedMsg
,
msg
)
}
msgBufferLength
:=
len
(
ss
.
msgBuffer
)
for
i
:=
0
;
i
<
msgBufferLength
;
i
++
{
for
{
msg
:=
<-
ss
.
msgBuffer
if
msg
.
EndTs
()
<=
serviceTime
{
searchMsg
=
append
(
searchMsg
,
msg
)
continue
}
ss
.
unsolvedMsg
=
append
(
ss
.
unsolvedMsg
,
msg
)
msgBufferLength
:=
len
(
ss
.
msgBuffer
)
if
msgBufferLength
<=
0
{
break
}
}
if
len
(
searchMsg
)
<=
0
{
continue
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录