xnnyygn / xraft

xnnyygn's raft implementation
MIT License
229 stars 108 forks source link

这里在崩溃的时候,会不会导致数据不一致 #30

Open lutaoact opened 2 years ago

lutaoact commented 2 years ago

https://github.com/xnnyygn/xraft/blob/3442abcf0c54d631e10d44df577771d27138de74/xraft-core/src/main/java/in/xnnyygn/xraft/core/log/sequence/FileEntrySequence.java#L208

如果数据文件已经被截断了,但索引文件尚未被更新,就会发生不一致。 所以我认为应该先保存 offset,然后清理索引,再清理数据。

xnnyygn commented 2 years ago

有可能。不过这里移除尾部日志理论上极少发生,而且处理文件写入过程中的宕机主要靠启动时的文件检查,写入自身能做的恢复处理不多。

你可以把两句位置移动一下,或者在初始化时检查两个文件数据是否一致。如果你提交pull request的话我这边会看一下。谢谢。