tinyKV project2ab 关于storage如何删除entry

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 分钟后被自动关闭。不再允许新回复。