【we open star】账本文件在服务器崩溃时偶发异常时的修复
【任务描述/建议思路】
任务描述:
- 在文件存储中,区块会写入到磁盘00000000000000004454.fdb.END文件中,(以.fdb.END结尾的文件)
- 00000000000000004454.fdb.END文件达到一定大小之后,会变成00000000000000004454.fdb,之后着会产生新的如00000000000000004554.fdb.END文件,如下图所示:
- chainmaker-go节点在启动时会检索bfdb下的.fdb.END文件,作为文件存储最新的区块文件,将该文件中的区块加载到内存中,并与KVDB中的最新区块区块高度校验,校验通过节点才能正常启动。 (详情可阅读:https://docs.chainmaker.org.cn/tech/%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8.html 文件存储模块文档)
- 在第2步的.fdb.END文件变成.fdb然后产生新的.fdb.END的过程中如果出现服务器崩溃或者掉点的情况时,会导致.fdb.END文件丢失的现象,上述第3步校验会失败。节点将无法启动。如下图所示:
- 修复后按照bfdb的规则在节点启动时添加一个.fdb.END,如下图的00000000000000004554.fdb.END
建议思路:
思路一:
设计一种方式,避免步骤4的情况产生
思路二:
设计一种方式,在无法避免步骤4情况产生时让节点能继续产生正确的.fdb.END文件,让步骤3能正常校验通过
思路三:
欢迎提供新的思路
【贡献步骤】issue评论区留言方案认领一方案被采纳一代码提交到【weopenstar】项目组 Markdown and 快捷操作 are supported 添加附件
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information