Hi,
In our system we have the following setup and assumptions:
- A centralised configuration which dictates on which hosts raft agents should be spawned - i.e. a host spawns a raft agent only when it sees itself in the configuration as a current member.
- The configuration is propagated to all of the hosts. Once a host gets a configuration update it's assured to never go back to an earlier version.
- The configuration holds the initial members (i.e. term 0), so whenever a raft agent is spawned it starts with the same initial state machine.
- Membership changes are always replacements - i.e. removing a host and adding another one instead.
- When a membership change is required the hosts to add and remove are written in the configuration. The raft leader then sees the new membership and executes the membership change. When a membership change is reported as done by the raft leader, the configuration is updated to reflect the new final membership.
- A host may be removed and later re-added.
- Once a host sees in the configuration it's no longer in the raft members - it stops its raft agent.
Assuming the above, I have the following independent questions:
- Can an agent's log be deleted form the host when it stops its agent?
- Can we get rid of the the very initial members (term 0) in the configuration, and spawn agents with the current members in the configuration as the initial state machine?
I tried to think of scenarios which would lead to a split brain, but so far the assumptions seem to prevent such a case.
Can you help me find a loophole or otherwise prove it would work?
Thanks,
Alex