These are chat archives for atomix/atomix
released by the state machine then there's nothing to replicate.
DistributedLongstate machine uses snapshots, but most of the other state machines use the incremental compaction algorithm. The two just have to be used wisely. It would be insane to store e.g. a million commands to arrive at a 64-bit number. Might as well just store the 64-bit number. Storing and replicating snapshots just adds some overhead that isn't present in the incremental compaction algorithm. There some change if a large snapshot is being stored or replicated it could cause a pause in the system. There are some ways Copycat could get around this, e.g. copying the state machine memory before taking a snapshot so commands can keep being applied, but I've been reluctant to do any of that.
Snapshottableand the command's compaction mode is
DEFAULT(isn't changed to something else) Copycat will ensure it gets replicated as necessary. When a state machine is
Snapshottable, Copycat assumes all commands will be stored in the snapshot when one is taken. That means it will replicate the commands to a majority of the cluster, and when a snapshot is taken t will be removed from disk. If a snapshot is taken after a command is applied and a follower is dead or is lagging far behind and never received the command, the leader will automatically send its snapshot to that follower. So, state from
Snapshottablecommands will eventually make it to every node whether that be through replication of the command or replication of a snapshot that was taken after that command. If all state machines need to see a command there is a way to do that as well.