OpenAtomFoundation / xupercore

The kernel of xuperchain.
Apache License 2.0
61 stars 47 forks source link

平行链配置错误参数导致节点无法重新启动 #359

Open wangchao0222 opened 2 years ago

wangchao0222 commented 2 years ago

如果平行链调用合约创建时传入的创世配置为错误的参数,在运行中的节点会创建这条平行链失败,从而报错,这时不影响该节点的运行 但是当该节点重启后,重新加载该平行链时会因为创建链失败导致节点无法启动

wangchao0222 commented 2 years ago

通过代码梳理发现问题的主要原因是在创建平行链时会创建对应的账本结构,而由于参数错误导致创建出来的账本和创世块本身存在问题,由于节点正在运行中,所以并不会影响现有其他链的运行,然而当节点重启后由于是通过遍历账本文件夹来进行平行链的加载,所以在加载到这个问题账本时由于返回错误导致节点退出

方案一 在用户提交创建平行链交易后,在后台异步任务创建平行链出错后,直接删除本地创建好的账本数据,这样在节点重新启动后不会因为错误的账本,导致无法启动

方案二 节点启动后如果本地加载的平行链启动错误,则仅仅记录错误日志,不返回错误直接跳过运行,这样可以保证节点顺利启动运转主链

godeamon commented 2 years ago

评审结论:采用方案二