You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently RAFT.majority defines the majority needed for elections and log commits. This requires the operator to always start the same set of servers. It is easy to start A,B,C, append and commit some changes to the log, then stop them and start D,E,F and make some other changes, overwriting the previous ones and violating Leader Completeness.
We need to define a static membership, e.g. {A,B,C} in the config file, compute the majority from it (2) and use AddServer or RemoveServer to change it dynamically (in running members) and XML editing to change it in the config.
Every member should be identified by a name (logical name), which also names the persistent log. When started, and the name is not in the above list, become read-only (don't participate in elections) or throw an exception.
Adding or removing a server would involve calling AddServer which needs to be acked by a majority of the existing view, and then the config would need to be changed as well.
The text was updated successfully, but these errors were encountered:
- Allowing for dirty reads
- If a new member is not part of the defined membership, it won't start and an exception will be thrown
- Added handling of internal commands to log
Currently
RAFT.majority
defines the majority needed for elections and log commits. This requires the operator to always start the same set of servers. It is easy to start A,B,C, append and commit some changes to the log, then stop them and start D,E,F and make some other changes, overwriting the previous ones and violating Leader Completeness.We need to define a static membership, e.g.
{A,B,C}
in the config file, compute the majority from it (2) and useAddServer
orRemoveServer
to change it dynamically (in running members) and XML editing to change it in the config.Every member should be identified by a name (logical name), which also names the persistent log. When started, and the name is not in the above list, become read-only (don't participate in elections) or throw an exception.
Adding or removing a server would involve calling
AddServer
which needs to be acked by a majority of the existing view, and then the config would need to be changed as well.The text was updated successfully, but these errors were encountered: