From 29cae579325e5968343d665f02f8d961624f9481 Mon Sep 17 00:00:00 2001 From: Chris O'Haver Date: Fri, 12 Nov 2021 11:00:20 -0500 Subject: [PATCH] plugin/loadbalance: More consistent shuffling (#4961) * fix shuffling Signed-off-by: Chris O'Haver * shuffle each record once Signed-off-by: Chris O'Haver --- plugin/loadbalance/loadbalance.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugin/loadbalance/loadbalance.go b/plugin/loadbalance/loadbalance.go index 3f3049202..0d67d3e4a 100644 --- a/plugin/loadbalance/loadbalance.go +++ b/plugin/loadbalance/loadbalance.go @@ -61,13 +61,12 @@ func roundRobinShuffle(records []dns.RR) { records[0], records[1] = records[1], records[0] } default: - for j := 0; j < l*(int(dns.Id())%4+1); j++ { - q := int(dns.Id()) % l - p := int(dns.Id()) % l - if q == p { - p = (p + 1) % l + for j := 0; j < l; j++ { + p := j + (int(dns.Id()) % (l-j)) + if j == p { + continue } - records[q], records[p] = records[p], records[q] + records[j], records[p] = records[p], records[j] } } }