Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
6cf9ecb7
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
6cf9ecb7
编写于
9月 17, 2018
作者:
K
Kevin Heifner
提交者:
GitHub
9月 17, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #5696 from EOSIO/5685-avoid-deleting-state-directory
delete contents inside state directory but not the directory itself
上级
eeeae5bb
3590af77
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
3 deletion
+14
-3
plugins/chain_plugin/chain_plugin.cpp
plugins/chain_plugin/chain_plugin.cpp
+14
-3
未找到文件。
plugins/chain_plugin/chain_plugin.cpp
浏览文件 @
6cf9ecb7
...
...
@@ -314,6 +314,17 @@ fc::time_point calculate_genesis_timestamp( string tstr ) {
return
genesis_timestamp
;
}
void
clear_directory_contents
(
const
fc
::
path
&
p
)
{
using
boost
::
filesystem
::
directory_iterator
;
if
(
!
fc
::
is_directory
(
p
)
)
return
;
for
(
directory_iterator
enditr
,
itr
{
p
};
itr
!=
enditr
;
++
itr
)
{
fc
::
remove_all
(
itr
->
path
()
);
}
}
void
chain_plugin
::
plugin_initialize
(
const
variables_map
&
options
)
{
ilog
(
"initializing chain plugin"
);
...
...
@@ -459,11 +470,11 @@ void chain_plugin::plugin_initialize(const variables_map& options) {
ilog
(
"Deleting state database and blocks"
);
if
(
options
.
at
(
"truncate-at-block"
).
as
<
uint32_t
>
()
>
0
)
wlog
(
"The --truncate-at-block option does not make sense when deleting all blocks."
);
fc
::
remove_all
(
my
->
chain_config
->
state_dir
);
clear_directory_contents
(
my
->
chain_config
->
state_dir
);
fc
::
remove_all
(
my
->
blocks_dir
);
}
else
if
(
options
.
at
(
"hard-replay-blockchain"
).
as
<
bool
>
())
{
ilog
(
"Hard replay requested: deleting state database"
);
fc
::
remove_all
(
my
->
chain_config
->
state_dir
);
clear_directory_contents
(
my
->
chain_config
->
state_dir
);
auto
backup_dir
=
block_log
::
repair_log
(
my
->
blocks_dir
,
options
.
at
(
"truncate-at-block"
).
as
<
uint32_t
>
());
if
(
fc
::
exists
(
backup_dir
/
config
::
reversible_blocks_dir_name
)
||
options
.
at
(
"fix-reversible-blocks"
).
as
<
bool
>
())
{
...
...
@@ -485,7 +496,7 @@ void chain_plugin::plugin_initialize(const variables_map& options) {
ilog
(
"Replay requested: deleting state database"
);
if
(
options
.
at
(
"truncate-at-block"
).
as
<
uint32_t
>
()
>
0
)
wlog
(
"The --truncate-at-block option does not work for a regular replay of the blockchain."
);
fc
::
remove_all
(
my
->
chain_config
->
state_dir
);
clear_directory_contents
(
my
->
chain_config
->
state_dir
);
if
(
options
.
at
(
"fix-reversible-blocks"
).
as
<
bool
>
())
{
if
(
!
recover_reversible_blocks
(
my
->
chain_config
->
blocks_dir
/
config
::
reversible_blocks_dir_name
,
my
->
chain_config
->
reversible_cache_size
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录