raft里的log可能会有覆盖的情况,那么已经持久化的storage里的entry理应也是需要进行删除再添加的,但是Storage接口没有暴露相关的方法(MemoryStorage里有,是转成MemoryStorage?)。
还是我的逻辑就有问题,不应该去删除Storage里的entry?
1 个赞
raft覆盖是一种什么情况呢?一般来说会将所有的peer的日志应该会和leader一致,也就是说一个peer的所有日志只要和leader不一致就会被leader内的日志不断同步,直至相同。
如果说是leader里的日志具有重复,后面会有Log的compaction的
1 个赞
就是follower里的log可能会和leader的日志有冲突,然后会对follower的日志进行覆盖
1 个赞
覆盖之后的日志会持久化代替掉之前的
1 个赞
找到问题了,stabled改的有问题,2A中应该不会涉及到手动去对Storage进行日志的删除
1 个赞
这个问题是在2B中涉及的,2A中的持久化日志并没有存储到磁盘
并不是的,持久化日志的删除是在2B做的,2B的文档会有提示
是的,但2A中好像有对stabledIndex的修改
是的,这个是一个假的持久化,这个接口在2B中会用到,这里的stable会协助进行写盘
那你的意思是不是,RaftLog 中的 entries 是不是既包含了 stable 数据,也包含了 unstable 数据。
这个得做到 2B 的时候才能理解。
是的,RaftLog必然是要包含unstable数据的。不然就失去了AE时的日志比对的意义,stable的流程时定时进行的
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。