Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kvdb
rocksdb
提交
7e50ed8c
R
rocksdb
项目概览
kvdb
/
rocksdb
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rocksdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7e50ed8c
编写于
2月 07, 2015
作者:
M
Marko Kevac
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added some more wrappers and wrote a test for backup in C
上级
86e2a1ee
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
153 addition
and
3 deletion
+153
-3
db/c.cc
db/c.cc
+69
-1
db/c_test.c
db/c_test.c
+42
-0
include/rocksdb/c.h
include/rocksdb/c.h
+42
-2
未找到文件。
db/c.cc
浏览文件 @
7e50ed8c
...
...
@@ -72,6 +72,8 @@ using rocksdb::WriteOptions;
using
rocksdb
::
LiveFileMetaData
;
using
rocksdb
::
BackupEngine
;
using
rocksdb
::
BackupableDBOptions
;
using
rocksdb
::
BackupInfo
;
using
rocksdb
::
RestoreOptions
;
using
std
::
shared_ptr
;
...
...
@@ -79,6 +81,8 @@ extern "C" {
struct
rocksdb_t
{
DB
*
rep
;
};
struct
rocksdb_backup_engine_t
{
BackupEngine
*
rep
;
};
struct
rocksdb_backup_engine_info_t
{
std
::
vector
<
BackupInfo
>
rep
;
};
struct
rocksdb_restore_options_t
{
RestoreOptions
rep
;
};
struct
rocksdb_iterator_t
{
Iterator
*
rep
;
};
struct
rocksdb_writebatch_t
{
WriteBatch
rep
;
};
struct
rocksdb_snapshot_t
{
const
Snapshot
*
rep
;
};
...
...
@@ -532,10 +536,11 @@ rocksdb_t* rocksdb_open_for_read_only(
}
rocksdb_backup_engine_t
*
rocksdb_backup_engine_open
(
const
rocksdb_options_t
*
options
,
const
char
*
path
,
char
**
errptr
)
{
BackupEngine
*
be
;
if
(
SaveError
(
errptr
,
BackupEngine
::
Open
(
Env
::
Default
()
,
BackupableDBOptions
(
path
),
&
be
)))
{
if
(
SaveError
(
errptr
,
BackupEngine
::
Open
(
options
->
rep
.
env
,
BackupableDBOptions
(
path
),
&
be
)))
{
return
nullptr
;
}
rocksdb_backup_engine_t
*
result
=
new
rocksdb_backup_engine_t
;
...
...
@@ -550,6 +555,69 @@ void rocksdb_backup_engine_create_new_backup(
SaveError
(
errptr
,
be
->
rep
->
CreateNewBackup
(
db
->
rep
));
}
rocksdb_restore_options_t
*
rocksdb_restore_options_create
()
{
return
new
rocksdb_restore_options_t
;
}
void
rocksdb_restore_options_destroy
(
rocksdb_restore_options_t
*
opt
)
{
delete
opt
;
}
void
rocksdb_restore_options_set_keep_log_files
(
rocksdb_restore_options_t
*
opt
,
int
v
)
{
opt
->
rep
.
keep_log_files
=
v
;
}
void
rocksdb_backup_engine_restore_db_from_latest_backup
(
rocksdb_backup_engine_t
*
be
,
const
char
*
db_dir
,
const
char
*
wal_dir
,
const
rocksdb_restore_options_t
*
restore_options
,
char
**
errptr
)
{
SaveError
(
errptr
,
be
->
rep
->
RestoreDBFromLatestBackup
(
std
::
string
(
db_dir
),
std
::
string
(
wal_dir
),
restore_options
->
rep
));
}
const
rocksdb_backup_engine_info_t
*
rocksdb_backup_engine_get_backup_info
(
rocksdb_backup_engine_t
*
be
)
{
rocksdb_backup_engine_info_t
*
result
=
new
rocksdb_backup_engine_info_t
;
be
->
rep
->
GetBackupInfo
(
&
result
->
rep
);
return
result
;
}
int
rocksdb_backup_engine_info_count
(
const
rocksdb_backup_engine_info_t
*
info
)
{
return
static_cast
<
int
>
(
info
->
rep
.
size
());
}
const
int64_t
rocksdb_backup_engine_info_timestamp
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
)
{
return
info
->
rep
[
index
].
timestamp
;
}
const
uint32_t
rocksdb_backup_engine_info_backup_id
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
)
{
return
info
->
rep
[
index
].
backup_id
;
}
const
uint64_t
rocksdb_backup_engine_info_size
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
)
{
return
info
->
rep
[
index
].
size
;
}
const
uint32_t
rocksdb_backup_engine_info_number_files
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
)
{
return
info
->
rep
[
index
].
number_files
;
}
void
rocksdb_backup_engine_info_destroy
(
const
rocksdb_backup_engine_info_t
*
info
)
{
delete
info
;
}
void
rocksdb_backup_engine_close
(
rocksdb_backup_engine_t
*
be
)
{
delete
be
->
rep
;
...
...
db/c_test.c
浏览文件 @
7e50ed8c
...
...
@@ -10,9 +10,11 @@
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <inttypes.h>
const
char
*
phase
=
""
;
static
char
dbname
[
200
];
static
char
dbbackupname
[
200
];
static
void
StartPhase
(
const
char
*
name
)
{
fprintf
(
stderr
,
"=== Test %s
\n
"
,
name
);
...
...
@@ -346,6 +348,11 @@ int main(int argc, char** argv) {
GetTempDir
(),
((
int
)
geteuid
()));
snprintf
(
dbbackupname
,
sizeof
(
dbbackupname
),
"%s/rocksdb_c_test-%d-backup"
,
GetTempDir
(),
((
int
)
geteuid
()));
StartPhase
(
"create_objects"
);
cmp
=
rocksdb_comparator_create
(
NULL
,
CmpDestroy
,
CmpCompare
,
CmpName
);
env
=
rocksdb_create_default_env
();
...
...
@@ -396,6 +403,41 @@ int main(int argc, char** argv) {
CheckNoError
(
err
);
CheckGet
(
db
,
roptions
,
"foo"
,
"hello"
);
StartPhase
(
"backup"
);
{
rocksdb_destroy_db
(
options
,
dbbackupname
,
&
err
);
CheckNoError
(
err
);
rocksdb_backup_engine_t
*
be
=
rocksdb_backup_engine_open
(
options
,
dbbackupname
,
&
err
);
CheckNoError
(
err
);
rocksdb_backup_engine_create_new_backup
(
be
,
db
,
&
err
);
CheckNoError
(
err
);
rocksdb_delete
(
db
,
woptions
,
"foo"
,
3
,
&
err
);
CheckNoError
(
err
);
rocksdb_close
(
db
);
rocksdb_destroy_db
(
options
,
dbname
,
&
err
);
CheckNoError
(
err
);
rocksdb_restore_options_t
*
restore_options
=
rocksdb_restore_options_create
();
rocksdb_restore_options_set_keep_log_files
(
restore_options
,
0
);
rocksdb_backup_engine_restore_db_from_latest_backup
(
be
,
dbname
,
dbname
,
restore_options
,
&
err
);
CheckNoError
(
err
);
rocksdb_restore_options_destroy
(
restore_options
);
rocksdb_options_set_error_if_exists
(
options
,
0
);
db
=
rocksdb_open
(
options
,
dbname
,
&
err
);
CheckNoError
(
err
);
rocksdb_options_set_error_if_exists
(
options
,
1
);
CheckGet
(
db
,
roptions
,
"foo"
,
"hello"
);
rocksdb_backup_engine_close
(
be
);
}
StartPhase
(
"compactall"
);
rocksdb_compact_range
(
db
,
NULL
,
0
,
NULL
,
0
);
CheckGet
(
db
,
roptions
,
"foo"
,
"hello"
);
...
...
include/rocksdb/c.h
浏览文件 @
7e50ed8c
...
...
@@ -56,6 +56,8 @@ extern "C" {
typedef
struct
rocksdb_t
rocksdb_t
;
typedef
struct
rocksdb_backup_engine_t
rocksdb_backup_engine_t
;
typedef
struct
rocksdb_backup_engine_info_t
rocksdb_backup_engine_info_t
;
typedef
struct
rocksdb_restore_options_t
rocksdb_restore_options_t
;
typedef
struct
rocksdb_cache_t
rocksdb_cache_t
;
typedef
struct
rocksdb_compactionfilter_t
rocksdb_compactionfilter_t
;
typedef
struct
rocksdb_compactionfiltercontext_t
...
...
@@ -106,16 +108,54 @@ extern rocksdb_t* rocksdb_open_for_read_only(
char
**
errptr
);
extern
rocksdb_backup_engine_t
*
rocksdb_backup_engine_open
(
const
rocksdb_options_t
*
options
,
const
char
*
path
,
char
**
errptr
);
extern
void
rocksdb_backup_engine_create_new_backup
(
rocksdb_backup_engine_t
*
be
,
rocksdb_backup_engine_t
*
be
,
rocksdb_t
*
db
,
char
**
errptr
);
extern
rocksdb_restore_options_t
*
rocksdb_restore_options_create
();
extern
void
rocksdb_restore_options_destroy
(
rocksdb_restore_options_t
*
opt
);
extern
void
rocksdb_restore_options_set_keep_log_files
(
rocksdb_restore_options_t
*
opt
,
int
v
);
extern
void
rocksdb_backup_engine_restore_db_from_latest_backup
(
rocksdb_backup_engine_t
*
be
,
const
char
*
db_dir
,
const
char
*
wal_dir
,
const
rocksdb_restore_options_t
*
restore_options
,
char
**
errptr
);
extern
const
rocksdb_backup_engine_info_t
*
rocksdb_backup_engine_get_backup_info
(
rocksdb_backup_engine_t
*
be
);
extern
int
rocksdb_backup_engine_info_count
(
const
rocksdb_backup_engine_info_t
*
info
);
extern
const
int64_t
rocksdb_backup_engine_info_timestamp
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
);
extern
const
uint32_t
rocksdb_backup_engine_info_backup_id
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
);
extern
const
uint64_t
rocksdb_backup_engine_info_size
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
);
extern
const
uint32_t
rocksdb_backup_engine_info_number_files
(
const
rocksdb_backup_engine_info_t
*
info
,
int
index
);
extern
void
rocksdb_backup_engine_info_destroy
(
const
rocksdb_backup_engine_info_t
*
info
);
extern
void
rocksdb_backup_engine_close
(
rocksdb_backup_engine_t
*
be
);
rocksdb_backup_engine_t
*
be
);
extern
rocksdb_t
*
rocksdb_open_column_families
(
const
rocksdb_options_t
*
options
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录