Closed hjk41 closed 5 years ago
[braft/src/braft/node.cpp:384]: Check failed: _log_manager->last_log_index() == options.last_log_index (1027 vs 1024).
bootstrap中检查last_log_index是否与输入一致,如果不一致就会报错。你为什么需要调用bootstrap呢,再就是调用的参数是否设置正确
我的load_snapshot实现有问题,估计是这个原因才导致braft出错了。
至于用bootstrap,因为我的初始数据是用工具导入的,也就是说,所有的replica一启动就是有数据的状态。不用bootstrap的话有空白的机器加进来就不会自动复制初始数据了。不过也许我应该让用户自己保证所有加进来的机器都有初始数据。。。
是不是只有在初始导入的时候用bootstrap就可以了,后续副本的增删就用braft的add_peer/remove_peer来实现是不是更好。
嗯,现在是这么做的。问题的确出在snapshot上,改好了就好了
初始化时因为已经有数据,所以做了bootstrap,但是总是在bootstrap这里提示出错。虽然后面也能继续跑,但程序就会出各种诡异bug,感觉是栈乱掉了。
不知道栈坏掉跟这个出错是否有关系,以及为什么会有这个错误?
出错信息如下:
代码如下: