Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
4ef0a73e
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 搜索 >>
未验证
提交
4ef0a73e
编写于
5月 31, 2023
作者:
G
groot
提交者:
GitHub
5月 31, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix a crash bug for backup/restore (#24526)
Signed-off-by:
N
yhmo
<
yihua.mo@zilliz.com
>
上级
dbf07dfd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
42 addition
and
0 deletion
+42
-0
internal/util/importutil/binlog_adapter.go
internal/util/importutil/binlog_adapter.go
+19
-0
internal/util/importutil/binlog_adapter_test.go
internal/util/importutil/binlog_adapter_test.go
+23
-0
未找到文件。
internal/util/importutil/binlog_adapter.go
浏览文件 @
4ef0a73e
...
...
@@ -618,6 +618,19 @@ func (p *BinlogAdapter) getShardingListByPrimaryVarchar(primaryKeys []string,
return
shardList
,
nil
}
// Sometimes the fieldID doesn't exist in the memoryData in the following case:
// Use an old backup tool(v0.2.2) to backup a collection of milvus v2.2.9, use a new backup tool to restore the collection
func
(
p
*
BinlogAdapter
)
verifyField
(
fieldID
storage
.
FieldID
,
memoryData
[]
map
[
storage
.
FieldID
]
storage
.
FieldData
)
error
{
for
_
,
fields
:=
range
memoryData
{
_
,
ok
:=
fields
[
fieldID
]
if
!
ok
{
log
.
Error
(
"Binlog adapter: the field ID doesn't exist in collection schema"
,
zap
.
Int64
(
"fieldID"
,
fieldID
))
return
fmt
.
Errorf
(
"the field ID %d doesn't exist in collection schema"
,
fieldID
)
}
}
return
nil
}
// readInsertlog method reads an insert log, and split the data into different shards according to a shard list
// The shardList is a list to tell which row belong to which shard, returned by getShardingListByPrimaryXXX()
// For deleted rows, we say its shard id is -1.
...
...
@@ -629,6 +642,12 @@ func (p *BinlogAdapter) getShardingListByPrimaryVarchar(primaryKeys []string,
// Note: the row count of insert log need to be equal to length of shardList
func
(
p
*
BinlogAdapter
)
readInsertlog
(
fieldID
storage
.
FieldID
,
logPath
string
,
memoryData
[]
map
[
storage
.
FieldID
]
storage
.
FieldData
,
shardList
[]
int32
)
error
{
err
:=
p
.
verifyField
(
fieldID
,
memoryData
)
if
err
!=
nil
{
log
.
Error
(
"Binlog adapter: could not read binlog file"
,
zap
.
String
(
"logPath"
,
logPath
),
zap
.
Error
(
err
))
return
fmt
.
Errorf
(
"could not read binlog file %s, error: %w"
,
logPath
,
err
)
}
// open the insert log file
binlogFile
,
err
:=
NewBinlogFile
(
p
.
chunkManager
)
if
err
!=
nil
{
...
...
internal/util/importutil/binlog_adapter_test.go
浏览文件 @
4ef0a73e
...
...
@@ -1032,6 +1032,29 @@ func Test_BinlogAdapterDispatch(t *testing.T) {
assert
.
Equal
(
t
,
0
,
segmentsData
[
2
][
fieldID
]
.
RowNum
())
}
func
Test_BinlogAdapterVerifyField
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
segmentsData
:=
make
([]
map
[
storage
.
FieldID
]
storage
.
FieldData
,
0
,
1
)
segmentData
:=
initSegmentData
(
sampleSchema
())
segmentsData
=
append
(
segmentsData
,
segmentData
)
flushFunc
:=
func
(
fields
map
[
storage
.
FieldID
]
storage
.
FieldData
,
shardID
int
)
error
{
return
nil
}
adapter
,
err
:=
NewBinlogAdapter
(
ctx
,
sampleSchema
(),
2
,
1024
,
2048
,
&
MockChunkManager
{},
flushFunc
,
0
,
math
.
MaxUint64
)
assert
.
NotNil
(
t
,
adapter
)
assert
.
Nil
(
t
,
err
)
err
=
adapter
.
verifyField
(
103
,
segmentsData
)
assert
.
NoError
(
t
,
err
)
err
=
adapter
.
verifyField
(
999999
,
segmentsData
)
assert
.
Error
(
t
,
err
)
err
=
adapter
.
readInsertlog
(
999999
,
"dummy"
,
segmentsData
,
[]
int32
{
1
})
assert
.
Error
(
t
,
err
)
}
func
Test_BinlogAdapterReadInsertlog
(
t
*
testing
.
T
)
{
ctx
:=
context
.
Background
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录