We need two ways of pushed to get to each mirror. When one of the ways fails to send the push on (host down for example), the other way will take in and make sure the push goes through.
A mirror is pushed by / pulls from several mirrors. How the choice should be made ?
/debian/project/trace/ftp-master.debian.org provides :
- Archive serial: 2010013001 with the two last digits give the Nth dinstall in the day
The format allows easy comparaison using bash
Today, a mirror can provide an up to date /debian/project/trace/ftp-master.debian.org while the sync has not been finished. We can only count on the mirror specific trace file, written only in case of success.
- write in the mirror-specific trace the serial read at rsync start.
- make the mirror-specific trace name a one that can be expected by downstreams
On the pushing side:
- The mirror may sends the archive serial and its hostname in the push signal
On the pushed side:
check the serial sent against the local serial, if local > pushed, exit in error
- may check the hostname sent against a list of possible hostname, or exit in error
- two hosts are defined: the regular one, and the fallback one
- if a sync is in progress with the regular one, ignore the fallback signal
- if a sync with the regular fails, sync from the fallback (rsync may break in the middle of the sync)
To be added to ftpsync:
check the remote serial against the local serial, if local > pushed, exit in error (would not be applicable to first-pass push or mhop cases)