The official mirror endpoint (https://archlinux.org/mirrors/status/json/) provides the completion_pct property: If a status check hasn't succeeded in the past, the completion_pct is smaller than 1. We should use this information to avoid selecting unreliable mirrors.
Currently, we are already using the score attribute, which is calculated using the completion_pct and other attributes: As stated on https://archlinux.org/mirrors/status/:
Mirror Score: A very rough calculation for ranking mirrors. It is currently calculated as (hours delay + average duration + standard deviation) / completion percentage. Lower is better.
The problem is that this score does not punish unreliable mirrors as much as it should. For example, suppose two mirrors have the exact same values for hours delay, average duration and standard deviation, but one mirror has a completion percentage of 1, the other mirror has a completion percentage of 0.5. This means the less reliable mirror will only have a score twice as large as the more reliable mirror.
The official mirror endpoint (https://archlinux.org/mirrors/status/json/) provides the
completion_pctproperty: If a status check hasn't succeeded in the past, thecompletion_pctis smaller than 1. We should use this information to avoid selecting unreliable mirrors.Currently, we are already using the
scoreattribute, which is calculated using thecompletion_pctand other attributes: As stated on https://archlinux.org/mirrors/status/:The problem is that this score does not punish unreliable mirrors as much as it should. For example, suppose two mirrors have the exact same values for
hours delay,average durationandstandard deviation, but one mirror has acompletion percentageof 1, the other mirror has acompletion percentageof 0.5. This means the less reliable mirror will only have a score twice as large as the more reliable mirror.