1. a leader cannot immediately conclude that an entry from a previous term is committed once it is stored on a majority of servers.
- 在b阶段,S1下线,S5上线并被选为leader,同时写入term3/index2,此时S1和S2中的entry仍然是term2/index2。此时在多个实例中已经存在不同的entry,根据raft的定义,将来一定会有实例的entry被另一个(成为leader)实例的entry所覆盖。
- 到了c阶段,S5下线,S1上线并被选为leader,此时S1写入term4/index3(其实这个term4/index3是不是一个新entry并不重要,只是为了说明当前处于term4中),下面一步就到的问题的核心所在:S1将term2/index2 append到S3中,此时该entry已经到达了集群中的大多数,S1随即将其标记为commited(这里与上面截图说明不太一样,我理解其实到S4的时候问题已经暴露出来了,不需要阶段e)。这一步是有问题的,因为在S5中最新的entry是term3/index2,