mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-12-05 01:31:03 +01:00
This patch is quite small but the change is really important. Thanks to the previous patch, we can use PEER_F_SYNCHED flag to know if a peer is synchronized or not. So instead of tracking last ack messages for each table to be able to restart at a given point when the peer reconnects, we decided to restart from the begining if a peer is not synchronized when a new connection is established. So, it is a huge change because, on reconnect, instead of pushing some missed updates, all local updates are pushed again. Most of time, it is not a problem because nowadays, connection are quite stable, especially because a heartbeat message is sent to keep it active. The only drawback is when a peer is restarted. In that case, we have no way to know it is synchronized because he learned table contents from it old local peer. This change is mandatory. First to replace the update tree by a mt-list and remove the update lock. Then to split this list by buckets to reduce contention.