omnipaxos
omnipaxos copied to clipboard
Snapshot syncing optimization
During log synchronization, and when snapshots are enabled, a sync object with a snapshot of missing decided entries is sent to servers. Right now the out-of-date servers will always merge this snapshot onto their current decided entries. The snapshot represents entries [out_of_date_server_decided_idx .. up_to_date_server_decided_idx]. If the out-of-date server has valid accepted entries that are decided in the up-to-date server's log then they are unnecessarily sent in the decided snapshot. We could instead send a snapshot representing [out_of_date_servers_valid_entries .. up_to_date_server_decided_idx].