Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
54c0e640
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 搜索 >>
未验证
提交
54c0e640
编写于
8月 08, 2023
作者:
B
Bingyi Sun
提交者:
GitHub
8月 08, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix search on empty segments set bug (#26136)
Signed-off-by:
N
sunby
<
sunbingyi1992@gmail.com
>
上级
703f0a18
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
28 addition
and
40 deletion
+28
-40
internal/querycoordv2/observers/leader_observer.go
internal/querycoordv2/observers/leader_observer.go
+1
-8
internal/querycoordv2/observers/leader_observer_test.go
internal/querycoordv2/observers/leader_observer_test.go
+3
-3
internal/querycoordv2/task/executor.go
internal/querycoordv2/task/executor.go
+1
-8
internal/querycoordv2/utils/types.go
internal/querycoordv2/utils/types.go
+12
-13
internal/querycoordv2/utils/types_test.go
internal/querycoordv2/utils/types_test.go
+3
-3
internal/querynodev2/delegator/delegator_data.go
internal/querynodev2/delegator/delegator_data.go
+4
-5
internal/querynodev2/delegator/distribution.go
internal/querynodev2/delegator/distribution.go
+4
-0
未找到文件。
internal/querycoordv2/observers/leader_observer.go
浏览文件 @
54c0e640
...
...
@@ -175,13 +175,6 @@ func (o *LeaderObserver) findNeedLoadedSegments(leaderView *meta.LeaderView, dis
continue
}
readableVersion
:=
int64
(
0
)
if
existInCurrentTarget
{
readableVersion
=
o
.
target
.
GetCollectionTargetVersion
(
s
.
CollectionID
,
meta
.
CurrentTarget
)
}
else
{
readableVersion
=
o
.
target
.
GetCollectionTargetVersion
(
s
.
CollectionID
,
meta
.
NextTarget
)
}
if
!
ok
||
version
.
GetVersion
()
<
s
.
Version
{
// Leader misses this segment
ctx
:=
context
.
Background
()
resp
,
err
:=
o
.
broker
.
GetSegmentInfo
(
ctx
,
s
.
GetID
())
...
...
@@ -189,7 +182,7 @@ func (o *LeaderObserver) findNeedLoadedSegments(leaderView *meta.LeaderView, dis
log
.
Warn
(
"failed to get segment info from DataCoord"
,
zap
.
Error
(
err
))
continue
}
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
,
readableVersion
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
)
ret
=
append
(
ret
,
&
querypb
.
SyncAction
{
Type
:
querypb
.
SyncType_Set
,
...
...
internal/querycoordv2/observers/leader_observer_test.go
浏览文件 @
54c0e640
...
...
@@ -127,7 +127,7 @@ func (suite *LeaderObserverTestSuite) TestSyncLoadedSegments() {
view
:=
utils
.
CreateTestLeaderView
(
2
,
1
,
"test-insert-channel"
,
map
[
int64
]
int64
{},
map
[
int64
]
*
meta
.
Segment
{})
view
.
TargetVersion
=
observer
.
target
.
GetCollectionTargetVersion
(
1
,
meta
.
CurrentTarget
)
observer
.
dist
.
LeaderViewManager
.
Update
(
2
,
view
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
,
view
.
TargetVersion
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
)
expectReqeustFunc
:=
func
(
version
int64
)
*
querypb
.
SyncDistributionRequest
{
return
&
querypb
.
SyncDistributionRequest
{
...
...
@@ -218,7 +218,7 @@ func (suite *LeaderObserverTestSuite) TestIgnoreSyncLoadedSegments() {
view
:=
utils
.
CreateTestLeaderView
(
2
,
1
,
"test-insert-channel"
,
map
[
int64
]
int64
{},
map
[
int64
]
*
meta
.
Segment
{})
view
.
TargetVersion
=
observer
.
target
.
GetCollectionTargetVersion
(
1
,
meta
.
CurrentTarget
)
observer
.
dist
.
LeaderViewManager
.
Update
(
2
,
view
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
,
view
.
TargetVersion
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
)
expectReqeustFunc
:=
func
(
version
int64
)
*
querypb
.
SyncDistributionRequest
{
return
&
querypb
.
SyncDistributionRequest
{
...
...
@@ -352,7 +352,7 @@ func (suite *LeaderObserverTestSuite) TestSyncLoadedSegmentsWithReplicas() {
view2
:=
utils
.
CreateTestLeaderView
(
4
,
1
,
"test-insert-channel"
,
map
[
int64
]
int64
{
1
:
4
},
map
[
int64
]
*
meta
.
Segment
{})
view
.
TargetVersion
=
observer
.
target
.
GetCollectionTargetVersion
(
1
,
meta
.
CurrentTarget
)
observer
.
dist
.
LeaderViewManager
.
Update
(
4
,
view2
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
,
view
.
TargetVersion
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
nil
)
expectReqeustFunc
:=
func
(
version
int64
)
*
querypb
.
SyncDistributionRequest
{
return
&
querypb
.
SyncDistributionRequest
{
...
...
internal/querycoordv2/task/executor.go
浏览文件 @
54c0e640
...
...
@@ -273,14 +273,7 @@ func (ex *Executor) loadSegment(task *SegmentTask, step int) error {
indexes
=
nil
}
readableVersion
:=
int64
(
0
)
switch
GetTaskType
(
task
)
{
case
TaskTypeGrow
:
readableVersion
=
ex
.
targetMgr
.
GetCollectionTargetVersion
(
task
.
CollectionID
(),
meta
.
NextTarget
)
case
TaskTypeMove
,
TaskTypeUpdate
:
readableVersion
=
ex
.
targetMgr
.
GetCollectionTargetVersion
(
task
.
CollectionID
(),
meta
.
CurrentTarget
)
}
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
indexes
,
readableVersion
)
loadInfo
:=
utils
.
PackSegmentLoadInfo
(
resp
,
indexes
)
// Get shard leader for the given replica and segment
leader
,
ok
:=
getShardLeader
(
ex
.
meta
.
ReplicaManager
,
ex
.
dist
,
task
.
CollectionID
(),
action
.
Node
(),
segment
.
GetInsertChannel
())
...
...
internal/querycoordv2/utils/types.go
浏览文件 @
54c0e640
...
...
@@ -64,7 +64,7 @@ func MergeMetaSegmentIntoSegmentInfo(info *querypb.SegmentInfo, segments ...*met
// packSegmentLoadInfo packs SegmentLoadInfo for given segment,
// packs with index if withIndex is true, this fetch indexes from IndexCoord
func
PackSegmentLoadInfo
(
resp
*
datapb
.
GetSegmentInfoResponse
,
indexes
[]
*
querypb
.
FieldIndexInfo
,
readableVersion
int64
)
*
querypb
.
SegmentLoadInfo
{
func
PackSegmentLoadInfo
(
resp
*
datapb
.
GetSegmentInfoResponse
,
indexes
[]
*
querypb
.
FieldIndexInfo
)
*
querypb
.
SegmentLoadInfo
{
var
(
deltaPosition
*
msgpb
.
MsgPosition
positionSrc
string
...
...
@@ -96,18 +96,17 @@ func PackSegmentLoadInfo(resp *datapb.GetSegmentInfoResponse, indexes []*querypb
zap
.
Duration
(
"tsLag"
,
tsLag
))
}
loadInfo
:=
&
querypb
.
SegmentLoadInfo
{
SegmentID
:
segment
.
ID
,
PartitionID
:
segment
.
PartitionID
,
CollectionID
:
segment
.
CollectionID
,
BinlogPaths
:
segment
.
Binlogs
,
NumOfRows
:
segment
.
NumOfRows
,
Statslogs
:
segment
.
Statslogs
,
Deltalogs
:
segment
.
Deltalogs
,
InsertChannel
:
segment
.
InsertChannel
,
IndexInfos
:
indexes
,
StartPosition
:
segment
.
GetStartPosition
(),
DeltaPosition
:
deltaPosition
,
ReadableVersion
:
readableVersion
,
SegmentID
:
segment
.
ID
,
PartitionID
:
segment
.
PartitionID
,
CollectionID
:
segment
.
CollectionID
,
BinlogPaths
:
segment
.
Binlogs
,
NumOfRows
:
segment
.
NumOfRows
,
Statslogs
:
segment
.
Statslogs
,
Deltalogs
:
segment
.
Deltalogs
,
InsertChannel
:
segment
.
InsertChannel
,
IndexInfos
:
indexes
,
StartPosition
:
segment
.
GetStartPosition
(),
DeltaPosition
:
deltaPosition
,
}
loadInfo
.
SegmentSize
=
calculateSegmentSize
(
loadInfo
)
return
loadInfo
...
...
internal/querycoordv2/utils/types_test.go
浏览文件 @
54c0e640
...
...
@@ -55,7 +55,7 @@ func Test_packLoadSegmentRequest(t *testing.T) {
proto
.
Clone
(
segmentInfo
)
.
(
*
datapb
.
SegmentInfo
),
},
}
req
:=
PackSegmentLoadInfo
(
resp
,
nil
,
0
)
req
:=
PackSegmentLoadInfo
(
resp
,
nil
)
assert
.
NotNil
(
t
,
req
.
GetDeltaPosition
())
assert
.
Equal
(
t
,
mockPChannel
,
req
.
GetDeltaPosition
()
.
ChannelName
)
assert
.
Equal
(
t
,
t2
,
req
.
GetDeltaPosition
()
.
Timestamp
)
...
...
@@ -67,7 +67,7 @@ func Test_packLoadSegmentRequest(t *testing.T) {
resp
:=
&
datapb
.
GetSegmentInfoResponse
{
Infos
:
[]
*
datapb
.
SegmentInfo
{
segInfo
},
}
req
:=
PackSegmentLoadInfo
(
resp
,
nil
,
0
)
req
:=
PackSegmentLoadInfo
(
resp
,
nil
)
assert
.
NotNil
(
t
,
req
.
GetDeltaPosition
())
assert
.
Equal
(
t
,
mockPChannel
,
req
.
GetDeltaPosition
()
.
ChannelName
)
assert
.
Equal
(
t
,
t1
,
req
.
GetDeltaPosition
()
.
Timestamp
)
...
...
@@ -79,7 +79,7 @@ func Test_packLoadSegmentRequest(t *testing.T) {
resp
:=
&
datapb
.
GetSegmentInfoResponse
{
Infos
:
[]
*
datapb
.
SegmentInfo
{
segInfo
},
}
req
:=
PackSegmentLoadInfo
(
resp
,
nil
,
0
)
req
:=
PackSegmentLoadInfo
(
resp
,
nil
)
assert
.
NotNil
(
t
,
req
.
GetDeltaPosition
())
assert
.
Equal
(
t
,
mockPChannel
,
req
.
GetDeltaPosition
()
.
ChannelName
)
assert
.
Equal
(
t
,
t0
,
req
.
GetDeltaPosition
()
.
Timestamp
)
...
...
internal/querynodev2/delegator/delegator_data.go
浏览文件 @
54c0e640
...
...
@@ -374,11 +374,10 @@ func (sd *shardDelegator) LoadSegments(ctx context.Context, req *querypb.LoadSeg
// alter distribution
entries
:=
lo
.
Map
(
req
.
GetInfos
(),
func
(
info
*
querypb
.
SegmentLoadInfo
,
_
int
)
SegmentEntry
{
return
SegmentEntry
{
SegmentID
:
info
.
GetSegmentID
(),
PartitionID
:
info
.
GetPartitionID
(),
NodeID
:
req
.
GetDstNodeID
(),
Version
:
req
.
GetVersion
(),
TargetVersion
:
info
.
GetReadableVersion
(),
SegmentID
:
info
.
GetSegmentID
(),
PartitionID
:
info
.
GetPartitionID
(),
NodeID
:
req
.
GetDstNodeID
(),
Version
:
req
.
GetVersion
(),
}
})
sd
.
distribution
.
AddDistributions
(
entries
...
)
...
...
internal/querynodev2/delegator/distribution.go
浏览文件 @
54c0e640
...
...
@@ -171,6 +171,10 @@ func (d *distribution) AddDistributions(entries ...SegmentEntry) {
defer
d
.
mut
.
Unlock
()
for
_
,
entry
:=
range
entries
{
if
s
,
ok
:=
d
.
sealedSegments
[
entry
.
SegmentID
];
ok
{
// remain the target version for already loaded segment to void skipping this segment when executing search
entry
.
TargetVersion
=
s
.
TargetVersion
}
d
.
sealedSegments
[
entry
.
SegmentID
]
=
entry
d
.
offlines
.
Remove
(
entry
.
SegmentID
)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录