I have the following query about implementation RAFT:
Consider the following scenario\implementation:
- RAFT leader receives a command entry, it appends the entry to an in-memory array It then sends the entries to followers (with the heartbeat)
- The followers receive the entry and append it to their in-memory array and then send a response that it has received the entry
- The leader then commits the entry by writing it to a durable store (file) The leader sends the latest commit index in the heartbeat
- The followers then commit the entries based on leader's commit index by storing the entry to their durable store (file)
One of the implementations of RAFT (link: https://github.com/peterbourgon/raft/) seems to implement it this way. I wanted to confirm if this fine.
Is it OK if entries are maintained "in memory" by the leader and the followers until it is committed? In what circumstances might this scenario fail?