Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
92c8e32e
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 搜索 >>
未验证
提交
92c8e32e
编写于
3月 02, 2022
作者:
C
Cai Yudong
提交者:
GitHub
3月 02, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Let MemoryKV.Load return error when key not exist (#15814)
Signed-off-by:
N
yudong.cai
<
yudong.cai@zilliz.com
>
上级
442e7911
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
39 addition
and
65 deletion
+39
-65
internal/kv/mem/mem_kv.go
internal/kv/mem/mem_kv.go
+2
-6
internal/kv/mem/mem_kv_test.go
internal/kv/mem/mem_kv_test.go
+3
-3
internal/querynode/mock_test.go
internal/querynode/mock_test.go
+2
-9
internal/storage/utils_test.go
internal/storage/utils_test.go
+1
-1
internal/util/paramtable/base_table.go
internal/util/paramtable/base_table.go
+30
-45
internal/util/paramtable/base_table_test.go
internal/util/paramtable/base_table_test.go
+1
-1
未找到文件。
internal/kv/mem/mem_kv.go
浏览文件 @
92c8e32e
...
...
@@ -80,9 +80,8 @@ func (kv *MemoryKV) Load(key string) (string, error) {
kv
.
RLock
()
defer
kv
.
RUnlock
()
item
:=
kv
.
tree
.
Get
(
memoryKVItem
{
key
:
key
})
// TODO,load unexisted key behavior is weird
if
item
==
nil
{
return
""
,
nil
return
""
,
fmt
.
Errorf
(
"invalid key: %s"
,
key
)
}
return
item
.
(
memoryKVItem
)
.
value
.
String
(),
nil
}
...
...
@@ -92,9 +91,8 @@ func (kv *MemoryKV) LoadBytes(key string) ([]byte, error) {
kv
.
RLock
()
defer
kv
.
RUnlock
()
item
:=
kv
.
tree
.
Get
(
memoryKVItem
{
key
:
key
})
// TODO,load unexisted key behavior is weird
if
item
==
nil
{
return
[]
byte
{},
nil
return
[]
byte
{},
fmt
.
Errorf
(
"invalid key: %s"
,
key
)
}
return
item
.
(
memoryKVItem
)
.
value
.
ByteSlice
(),
nil
}
...
...
@@ -104,7 +102,6 @@ func (kv *MemoryKV) LoadWithDefault(key, defaultValue string) string {
kv
.
RLock
()
defer
kv
.
RUnlock
()
item
:=
kv
.
tree
.
Get
(
memoryKVItem
{
key
:
key
})
if
item
==
nil
{
return
defaultValue
}
...
...
@@ -116,7 +113,6 @@ func (kv *MemoryKV) LoadBytesWithDefault(key string, defaultValue []byte) []byte
kv
.
RLock
()
defer
kv
.
RUnlock
()
item
:=
kv
.
tree
.
Get
(
memoryKVItem
{
key
:
key
})
if
item
==
nil
{
return
defaultValue
}
...
...
internal/kv/mem/mem_kv_test.go
浏览文件 @
92c8e32e
...
...
@@ -36,7 +36,7 @@ func TestMemoryKV_SaveAndLoadBytes(t *testing.T) {
noKey
:=
"no_key"
_value
,
err
=
mem
.
LoadBytes
(
noKey
)
assert
.
No
Error
(
t
,
err
)
assert
.
Error
(
t
,
err
)
assert
.
Empty
(
t
,
_value
)
}
...
...
@@ -167,7 +167,7 @@ func TestMemoryKV_MultiSaveBytesAndRemove(t *testing.T) {
_value
,
err
:=
mem
.
LoadBytes
(
keys
[
0
])
assert
.
Empty
(
t
,
_value
)
assert
.
No
Error
(
t
,
err
)
assert
.
Error
(
t
,
err
)
_values
,
err
:=
mem
.
MultiLoadBytes
(
keys
[
1
:
])
assert
.
Equal
(
t
,
values
[
1
:
],
_values
)
...
...
@@ -255,6 +255,6 @@ func TestMemoryKV_GetSize(t *testing.T) {
key2
:=
"TestMemoryKV_GetSize_key2"
size
,
err
=
memKV
.
GetSize
(
key2
)
assert
.
No
Error
(
t
,
err
)
assert
.
Error
(
t
,
err
)
assert
.
Equal
(
t
,
int64
(
0
),
size
)
}
internal/querynode/mock_test.go
浏览文件 @
92c8e32e
...
...
@@ -406,12 +406,8 @@ func genQueryMsgStream(ctx context.Context) (msgstream.MsgStream, error) {
}
func
genLocalChunkManager
()
(
storage
.
ChunkManager
,
error
)
{
p
,
err
:=
Params
.
Load
(
"storage.path"
)
if
err
!=
nil
{
return
nil
,
err
}
p
:=
Params
.
LoadWithDefault
(
"storage.path"
,
"/tmp/milvus/data"
)
lcm
:=
storage
.
NewLocalChunkManager
(
storage
.
RootPath
(
p
))
return
lcm
,
nil
}
...
...
@@ -427,10 +423,7 @@ func genRemoteChunkManager(ctx context.Context) (storage.ChunkManager, error) {
}
func
genVectorChunkManager
(
ctx
context
.
Context
)
(
*
storage
.
VectorChunkManager
,
error
)
{
p
,
err
:=
Params
.
Load
(
"storage.path"
)
if
err
!=
nil
{
return
nil
,
err
}
p
:=
Params
.
LoadWithDefault
(
"storage.path"
,
"/tmp/milvus/data"
)
lcm
:=
storage
.
NewLocalChunkManager
(
storage
.
RootPath
(
p
))
rcm
,
err
:=
storage
.
NewMinioChunkManager
(
...
...
internal/storage/utils_test.go
浏览文件 @
92c8e32e
...
...
@@ -94,7 +94,7 @@ func TestGetBinlogSize(t *testing.T) {
// key not in memoryKV
size
,
err
=
GetBinlogSize
(
memoryKV
,
key
)
assert
.
No
Error
(
t
,
err
)
assert
.
Error
(
t
,
err
)
assert
.
Zero
(
t
,
size
)
// normal binlog key, for example, index binlog
...
...
internal/util/paramtable/base_table.go
浏览文件 @
92c8e32e
...
...
@@ -34,7 +34,20 @@ import (
// UniqueID is type alias of typeutil.UniqueID
type
UniqueID
=
typeutil
.
UniqueID
const
envPrefix
string
=
"milvus"
const
(
DefaultMinioHost
=
"localhost"
DefaultMinioPort
=
"9000"
DefaultMinioAccessKey
=
"minioadmin"
DefaultMinioSecretAccessKey
=
"minioadmin"
DefaultMinioUseSSL
=
"false"
DefaultMinioBucketName
=
"a-bucket"
DefaultPulsarHost
=
"localhost"
DefaultPulsarPort
=
"6650"
DefaultEtcdEndpoints
=
"localhost:2379"
DefaultRocksmqPath
=
"/var/lib/milvus/rdb_data"
DefaultInsertBufferSize
=
"16777216"
DefaultEnvPrefix
=
"milvus"
)
// Base abstracts BaseTable
// TODO: it's never used, consider to substitute BaseTable or to remove it
...
...
@@ -112,100 +125,72 @@ func (gp *BaseTable) loadFromMilvusYaml() {
}
func
(
gp
*
BaseTable
)
tryloadFromEnv
()
{
var
err
error
// minio
minioAddress
:=
os
.
Getenv
(
"MINIO_ADDRESS"
)
if
minioAddress
==
""
{
minioHost
,
err
:=
gp
.
Load
(
"minio.address"
)
if
err
!=
nil
{
panic
(
err
)
}
port
,
err
:=
gp
.
Load
(
"minio.port"
)
if
err
!=
nil
{
panic
(
err
)
}
minioHost
:=
gp
.
LoadWithDefault
(
"minio.address"
,
DefaultMinioHost
)
port
:=
gp
.
LoadWithDefault
(
"minio.port"
,
DefaultMinioPort
)
minioAddress
=
minioHost
+
":"
+
port
}
gp
.
Save
(
"_MinioAddress"
,
minioAddress
)
// etcd
etcdEndpoints
:=
os
.
Getenv
(
"ETCD_ENDPOINTS"
)
if
etcdEndpoints
==
""
{
etcdEndpoints
,
err
=
gp
.
Load
(
"etcd.endpoints"
)
if
err
!=
nil
{
panic
(
err
)
}
etcdEndpoints
=
gp
.
LoadWithDefault
(
"etcd.endpoints"
,
DefaultEtcdEndpoints
)
}
gp
.
Save
(
"_EtcdEndpoints"
,
etcdEndpoints
)
// pulsar
pulsarAddress
:=
os
.
Getenv
(
"PULSAR_ADDRESS"
)
if
pulsarAddress
==
""
{
pulsarHost
,
err
:=
gp
.
Load
(
"pulsar.address"
)
if
err
!=
nil
{
panic
(
err
)
}
port
,
err
:=
gp
.
Load
(
"pulsar.port"
)
if
err
!=
nil
{
panic
(
err
)
}
pulsarHost
:=
gp
.
LoadWithDefault
(
"pulsar.address"
,
DefaultPulsarHost
)
port
:=
gp
.
LoadWithDefault
(
"pulsar.port"
,
DefaultPulsarPort
)
pulsarAddress
=
"pulsar://"
+
pulsarHost
+
":"
+
port
}
gp
.
Save
(
"_PulsarAddress"
,
pulsarAddress
)
// rocksmq
rocksmqPath
:=
os
.
Getenv
(
"ROCKSMQ_PATH"
)
if
rocksmqPath
==
""
{
path
,
err
:=
gp
.
Load
(
"rocksmq.path"
)
if
err
!=
nil
{
panic
(
err
)
}
rocksmqPath
=
path
rocksmqPath
=
gp
.
LoadWithDefault
(
"rocksmq.path"
,
DefaultRocksmqPath
)
}
gp
.
Save
(
"_RocksmqPath"
,
rocksmqPath
)
insertBufferFlushSize
:=
os
.
Getenv
(
"DATA_NODE_IBUFSIZE"
)
if
insertBufferFlushSize
==
""
{
insertBufferFlushSize
=
gp
.
LoadWithDefault
(
"datanode.flush.insertBufSize"
,
"16777216"
)
insertBufferFlushSize
=
gp
.
LoadWithDefault
(
"datanode.flush.insertBufSize"
,
DefaultInsertBufferSize
)
}
gp
.
Save
(
"_DATANODE_INSERTBUFSIZE"
,
insertBufferFlushSize
)
minioAccessKey
:=
os
.
Getenv
(
"MINIO_ACCESS_KEY"
)
if
minioAccessKey
==
""
{
minioAccessKey
,
err
=
gp
.
Load
(
"minio.accessKeyID"
)
if
err
!=
nil
{
panic
(
err
)
}
minioAccessKey
=
gp
.
LoadWithDefault
(
"minio.accessKeyID"
,
DefaultMinioAccessKey
)
}
gp
.
Save
(
"_MinioAccessKeyID"
,
minioAccessKey
)
minioSecretKey
:=
os
.
Getenv
(
"MINIO_SECRET_KEY"
)
if
minioSecretKey
==
""
{
minioSecretKey
,
err
=
gp
.
Load
(
"minio.secretAccessKey"
)
if
err
!=
nil
{
panic
(
err
)
}
minioSecretKey
=
gp
.
LoadWithDefault
(
"minio.secretAccessKey"
,
DefaultMinioSecretAccessKey
)
}
gp
.
Save
(
"_MinioSecretAccessKey"
,
minioSecretKey
)
minioUseSSL
:=
os
.
Getenv
(
"MINIO_USE_SSL"
)
if
minioUseSSL
==
""
{
minioUseSSL
,
err
=
gp
.
Load
(
"minio.useSSL"
)
if
err
!=
nil
{
panic
(
err
)
}
minioUseSSL
=
gp
.
LoadWithDefault
(
"minio.useSSL"
,
DefaultMinioUseSSL
)
}
gp
.
Save
(
"_MinioUseSSL"
,
minioUseSSL
)
minioBucketName
:=
os
.
Getenv
(
"MINIO_BUCKET_NAME"
)
if
minioBucketName
==
""
{
minioBucketName
,
err
=
gp
.
Load
(
"minio.bucketName"
)
if
err
!=
nil
{
panic
(
err
)
}
minioBucketName
=
gp
.
LoadWithDefault
(
"minio.bucketName"
,
DefaultMinioBucketName
)
}
gp
.
Save
(
"_MinioBucketName"
,
minioBucketName
)
// try to load environment start with ENV_PREFIX
for
_
,
e
:=
range
os
.
Environ
()
{
parts
:=
strings
.
SplitN
(
e
,
"="
,
2
)
if
strings
.
Contains
(
parts
[
0
],
e
nvPrefix
)
{
if
strings
.
Contains
(
parts
[
0
],
DefaultE
nvPrefix
)
{
parts
:=
strings
.
SplitN
(
e
,
"="
,
2
)
// remove the ENV PREFIX and use the rest as key
keyParts
:=
strings
.
SplitAfterN
(
parts
[
0
],
"."
,
2
)
...
...
internal/util/paramtable/base_table_test.go
浏览文件 @
92c8e32e
...
...
@@ -122,7 +122,7 @@ func TestBaseTable_LoadYaml(t *testing.T) {
assert
.
Nil
(
t
,
err
)
assert
.
Panics
(
t
,
func
()
{
baseParams
.
LoadYaml
(
"advanced/not_exist.yaml"
)
})
_
,
err
=
baseParams
.
Load
(
"etcd.
addres
s"
)
_
,
err
=
baseParams
.
Load
(
"etcd.
endpoint
s"
)
assert
.
Nil
(
t
,
err
)
_
,
err
=
baseParams
.
Load
(
"pulsar.port"
)
assert
.
Nil
(
t
,
err
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录