Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Incubator Pegasus
提交
fe342952
Incubator Pegasus
项目概览
apache
/
Incubator Pegasus
通知
9
Star
5
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Incubator Pegasus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
fe342952
编写于
6月 03, 2019
作者:
Q
QinZuoyan
提交者:
GitHub
6月 03, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pegasus_server: fix set usage scenario problem when open db (#334)
上级
fa8ae10d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
10 deletion
+24
-10
src/server/pegasus_server_impl.cpp
src/server/pegasus_server_impl.cpp
+22
-10
src/server/pegasus_server_impl.h
src/server/pegasus_server_impl.h
+2
-0
未找到文件。
src/server/pegasus_server_impl.cpp
浏览文件 @
fe342952
...
...
@@ -1451,7 +1451,7 @@ void pegasus_server_impl::on_clear_scanner(const int64_t &args) { _context_cache
}
}
// Update all envs before opening db, ensure all envs are effective for the newly opened db.
update_app_envs
(
envs
);
update_app_envs
_before_open_db
(
envs
);
rocksdb
::
Options
opts
=
_db_opts
;
opts
.
create_if_missing
=
true
;
...
...
@@ -1546,9 +1546,6 @@ void pegasus_server_impl::on_clear_scanner(const int64_t &args) { _context_cache
// update LastManualCompactFinishTime
_manual_compact_svc
.
init_last_finish_time_ms
(
_db
->
GetLastManualCompactFinishTime
());
// set default usage scenario
set_usage_scenario
(
ROCKSDB_ENV_USAGE_SCENARIO_NORMAL
);
parse_checkpoints
();
// checkpoint if necessary to make last_durable_decree() fresh.
...
...
@@ -1581,6 +1578,9 @@ void pegasus_server_impl::on_clear_scanner(const int64_t &args) { _context_cache
_is_open
=
true
;
// set default usage scenario after db opened.
set_usage_scenario
(
ROCKSDB_ENV_USAGE_SCENARIO_NORMAL
);
dinfo
(
"%s: start the update rocksdb statistics timer task"
,
replica_name
());
_update_replica_rdb_stat
=
::
dsn
::
tasking
::
enqueue_timer
(
LPC_REPLICATION_LONG_COMMON
,
...
...
@@ -2322,6 +2322,15 @@ void pegasus_server_impl::update_app_envs(const std::map<std::string, std::strin
_manual_compact_svc
.
start_manual_compact_if_needed
(
envs
);
}
void
pegasus_server_impl
::
update_app_envs_before_open_db
(
const
std
::
map
<
std
::
string
,
std
::
string
>
&
envs
)
{
// we do not update usage scenario because it depends on opened db.
update_default_ttl
(
envs
);
update_checkpoint_reserve
(
envs
);
_manual_compact_svc
.
start_manual_compact_if_needed
(
envs
);
}
void
pegasus_server_impl
::
query_app_envs
(
/*out*/
std
::
map
<
std
::
string
,
std
::
string
>
&
envs
)
{
envs
[
ROCKSDB_ENV_USAGE_SCENARIO_KEY
]
=
_usage_scenario
;
...
...
@@ -2337,12 +2346,12 @@ void pegasus_server_impl::update_usage_scenario(const std::map<std::string, std:
if
(
new_usage_scenario
!=
_usage_scenario
)
{
std
::
string
old_usage_scenario
=
_usage_scenario
;
if
(
set_usage_scenario
(
new_usage_scenario
))
{
ddebug_replica
(
"update app env[{}] from
{} to {}
succeed"
,
ddebug_replica
(
"update app env[{}] from
\"
{}
\"
to
\"
{}
\"
succeed"
,
ROCKSDB_ENV_USAGE_SCENARIO_KEY
,
old_usage_scenario
,
new_usage_scenario
);
}
else
{
derror_replica
(
"update app env[{}] from
{} to {}
failed"
,
derror_replica
(
"update app env[{}] from
\"
{}
\"
to
\"
{}
\"
failed"
,
ROCKSDB_ENV_USAGE_SCENARIO_KEY
,
old_usage_scenario
,
new_usage_scenario
);
...
...
@@ -2385,14 +2394,14 @@ void pegasus_server_impl::update_checkpoint_reserve(const std::map<std::string,
}
if
(
count
!=
_checkpoint_reserve_min_count
)
{
ddebug_replica
(
"update app env[{}] from
{} to {}
succeed"
,
ddebug_replica
(
"update app env[{}] from
\"
{}
\"
to
\"
{}
\"
succeed"
,
ROCKDB_CHECKPOINT_RESERVE_MIN_COUNT
,
_checkpoint_reserve_min_count
,
count
);
_checkpoint_reserve_min_count
=
count
;
}
if
(
time
!=
_checkpoint_reserve_time_seconds
)
{
ddebug_replica
(
"update app env[{}] from
{} to {}
succeed"
,
ddebug_replica
(
"update app env[{}] from
\"
{}
\"
to
\"
{}
\"
succeed"
,
ROCKDB_CHECKPOINT_RESERVE_TIME_SECONDS
,
_checkpoint_reserve_time_seconds
,
time
);
...
...
@@ -2482,6 +2491,7 @@ bool pegasus_server_impl::set_usage_scenario(const std::string &usage_scenario)
{
if
(
usage_scenario
==
_usage_scenario
)
return
false
;
std
::
string
old_usage_scenario
=
_usage_scenario
;
std
::
unordered_map
<
std
::
string
,
std
::
string
>
new_options
;
if
(
usage_scenario
==
ROCKSDB_ENV_USAGE_SCENARIO_NORMAL
||
usage_scenario
==
ROCKSDB_ENV_USAGE_SCENARIO_PREFER_WRITE
)
{
...
...
@@ -2554,10 +2564,12 @@ bool pegasus_server_impl::set_usage_scenario(const std::string &usage_scenario)
}
if
(
set_options
(
new_options
))
{
_usage_scenario
=
usage_scenario
;
ddebug
(
"%s: set usage scenario to %s succeed"
,
replica_name
(),
usage_scenario
.
c_str
());
ddebug_replica
(
"set usage scenario from
\"
{}
\"
to
\"
{}
\"
succeed"
,
old_usage_scenario
,
usage_scenario
);
return
true
;
}
else
{
derror
(
"%s: set usage scenario to %s failed"
,
replica_name
(),
usage_scenario
.
c_str
());
derror_replica
(
"set usage scenario from
\"
{}
\"
to
\"
{}
\"
failed"
,
old_usage_scenario
,
usage_scenario
);
return
false
;
}
}
...
...
src/server/pegasus_server_impl.h
浏览文件 @
fe342952
...
...
@@ -216,6 +216,8 @@ private:
std
::
pair
<
std
::
string
,
bool
>
get_restore_dir_from_env
(
const
std
::
map
<
std
::
string
,
std
::
string
>
&
env_kvs
);
void
update_app_envs_before_open_db
(
const
std
::
map
<
std
::
string
,
std
::
string
>
&
envs
);
void
update_usage_scenario
(
const
std
::
map
<
std
::
string
,
std
::
string
>
&
envs
);
void
update_default_ttl
(
const
std
::
map
<
std
::
string
,
std
::
string
>
&
envs
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录