Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
57dfdae3
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
57dfdae3
编写于
4月 28, 2019
作者:
X
Xu Peng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(db): fix bug and add exception catch in meta operation
Former-commit-id: 6d33945997e7a528bc729efdad6076d6532f79b3
上级
486c175b
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
241 addition
and
187 deletion
+241
-187
cpp/src/db/DBImpl.cpp
cpp/src/db/DBImpl.cpp
+2
-1
cpp/src/db/DBMetaImpl.cpp
cpp/src/db/DBMetaImpl.cpp
+239
-186
未找到文件。
cpp/src/db/DBImpl.cpp
浏览文件 @
57dfdae3
...
...
@@ -184,7 +184,8 @@ void DBImpl::background_call() {
std
::
lock_guard
<
std
::
mutex
>
lock
(
_mutex
);
assert
(
_bg_compaction_scheduled
);
if
(
!
_bg_error
.
ok
())
return
;
if
(
!
_bg_error
.
ok
()
||
_shutting_down
.
load
(
std
::
memory_order_acquire
))
return
;
background_compaction
();
...
...
cpp/src/db/DBMetaImpl.cpp
浏览文件 @
57dfdae3
...
...
@@ -129,6 +129,7 @@ Status DBMetaImpl::get_group(GroupSchema& group_info) {
}
Status
DBMetaImpl
::
get_group_no_lock
(
GroupSchema
&
group_info
)
{
try
{
auto
groups
=
ConnectorPtr
->
select
(
columns
(
&
GroupSchema
::
id
,
&
GroupSchema
::
group_id
,
&
GroupSchema
::
files_cnt
,
...
...
@@ -142,11 +143,16 @@ Status DBMetaImpl::get_group_no_lock(GroupSchema& group_info) {
}
else
{
return
Status
::
NotFound
(
"Group "
+
group_info
.
group_id
+
" not found"
);
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
Status
DBMetaImpl
::
has_group
(
const
std
::
string
&
group_id
,
bool
&
has_or_not
)
{
try
{
auto
groups
=
ConnectorPtr
->
select
(
columns
(
&
GroupSchema
::
id
),
where
(
c
(
&
GroupSchema
::
group_id
)
==
group_id
));
assert
(
groups
.
size
()
<=
1
);
...
...
@@ -155,6 +161,10 @@ Status DBMetaImpl::has_group(const std::string& group_id, bool& has_or_not) {
}
else
{
has_or_not
=
false
;
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
...
...
@@ -183,6 +193,7 @@ Status DBMetaImpl::add_group_file(GroupFileSchema& group_file) {
try
{
auto
id
=
ConnectorPtr
->
insert
(
group_file
);
group_file
.
id
=
id
;
LOG
(
DEBUG
)
<<
"Add group_file of file_id="
<<
group_file
.
file_id
;
}
catch
(...)
{
return
Status
::
DBTransactionError
(
"Add file Error"
);
}
...
...
@@ -200,6 +211,7 @@ Status DBMetaImpl::add_group_file(GroupFileSchema& group_file) {
Status
DBMetaImpl
::
files_to_index
(
GroupFilesSchema
&
files
)
{
files
.
clear
();
try
{
auto
selected
=
ConnectorPtr
->
select
(
columns
(
&
GroupFileSchema
::
id
,
&
GroupFileSchema
::
group_id
,
&
GroupFileSchema
::
file_id
,
...
...
@@ -232,6 +244,10 @@ Status DBMetaImpl::files_to_index(GroupFilesSchema& files) {
group_file
.
dimension
=
groups
[
group_file
.
group_id
].
dimension
;
files
.
push_back
(
group_file
);
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
...
...
@@ -241,6 +257,7 @@ Status DBMetaImpl::files_to_search(const std::string &group_id,
DatePartionedGroupFilesSchema
&
files
)
{
// TODO: support data partition
files
.
clear
();
try
{
auto
selected
=
ConnectorPtr
->
select
(
columns
(
&
GroupFileSchema
::
id
,
&
GroupFileSchema
::
group_id
,
&
GroupFileSchema
::
file_id
,
...
...
@@ -274,6 +291,10 @@ Status DBMetaImpl::files_to_search(const std::string &group_id,
}
files
[
group_file
.
date
].
push_back
(
group_file
);
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
...
...
@@ -282,6 +303,7 @@ Status DBMetaImpl::files_to_merge(const std::string& group_id,
DatePartionedGroupFilesSchema
&
files
)
{
files
.
clear
();
try
{
auto
selected
=
ConnectorPtr
->
select
(
columns
(
&
GroupFileSchema
::
id
,
&
GroupFileSchema
::
group_id
,
&
GroupFileSchema
::
file_id
,
...
...
@@ -314,6 +336,10 @@ Status DBMetaImpl::files_to_merge(const std::string& group_id,
}
files
[
group_file
.
date
].
push_back
(
group_file
);
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
...
...
@@ -341,6 +367,7 @@ Status DBMetaImpl::get_group_files(const std::string& group_id_,
Status
DBMetaImpl
::
update_group_file
(
GroupFileSchema
&
group_file
)
{
group_file
.
updated_time
=
GetMicroSecTimeStamp
();
try
{
auto
commited
=
ConnectorPtr
->
transaction
([
&
]
()
mutable
{
ConnectorPtr
->
update
(
group_file
);
return
true
;
...
...
@@ -348,10 +375,16 @@ Status DBMetaImpl::update_group_file(GroupFileSchema& group_file) {
if
(
!
commited
)
{
return
Status
::
DBTransactionError
(
"Update file Error"
);
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
LOG
(
DEBUG
)
<<
"id= "
<<
group_file
.
id
<<
" file_id="
<<
group_file
.
file_id
;
throw
e
;
}
return
Status
::
OK
();
}
Status
DBMetaImpl
::
update_files
(
GroupFilesSchema
&
files
)
{
try
{
auto
commited
=
ConnectorPtr
->
transaction
([
&
]
()
mutable
{
for
(
auto
&
file
:
files
)
{
file
.
updated_time
=
GetMicroSecTimeStamp
();
...
...
@@ -362,11 +395,16 @@ Status DBMetaImpl::update_files(GroupFilesSchema& files) {
if
(
!
commited
)
{
return
Status
::
DBTransactionError
(
"Update files Error"
);
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
Status
DBMetaImpl
::
cleanup_ttl_files
(
uint16_t
seconds
)
{
auto
now
=
GetMicroSecTimeStamp
();
try
{
auto
selected
=
ConnectorPtr
->
select
(
columns
(
&
GroupFileSchema
::
id
,
&
GroupFileSchema
::
group_id
,
&
GroupFileSchema
::
file_id
,
...
...
@@ -393,11 +431,16 @@ Status DBMetaImpl::cleanup_ttl_files(uint16_t seconds) {
ConnectorPtr
->
remove
<
GroupFileSchema
>
(
group_file
.
id
);
LOG
(
DEBUG
)
<<
"Removing deleted id="
<<
group_file
.
id
<<
" location="
<<
group_file
.
location
<<
std
::
endl
;
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
Status
DBMetaImpl
::
cleanup
()
{
try
{
auto
selected
=
ConnectorPtr
->
select
(
columns
(
&
GroupFileSchema
::
id
,
&
GroupFileSchema
::
group_id
,
&
GroupFileSchema
::
file_id
,
...
...
@@ -424,12 +467,17 @@ Status DBMetaImpl::cleanup() {
ConnectorPtr
->
remove
<
GroupFileSchema
>
(
group_file
.
id
);
LOG
(
DEBUG
)
<<
"Removing id="
<<
group_file
.
id
<<
" location="
<<
group_file
.
location
<<
std
::
endl
;
}
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
Status
DBMetaImpl
::
count
(
const
std
::
string
&
group_id
,
long
&
result
)
{
try
{
auto
selected
=
ConnectorPtr
->
select
(
columns
(
&
GroupFileSchema
::
rows
,
&
GroupFileSchema
::
date
),
where
((
c
(
&
GroupFileSchema
::
file_type
)
==
(
int
)
GroupFileSchema
::
RAW
or
...
...
@@ -450,6 +498,11 @@ Status DBMetaImpl::count(const std::string& group_id, long& result) {
}
result
/=
group_info
.
dimension
;
}
catch
(
std
::
exception
&
e
)
{
LOG
(
DEBUG
)
<<
e
.
what
();
throw
e
;
}
return
Status
::
OK
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录