From 197851d9cd8ffba99fc36727b237b51d05d650bc Mon Sep 17 00:00:00 2001 From: Le Quoc Tuan <mr.lequoctuan@gmail.com> Date: Tue, 27 May 2025 11:32:33 +0700 Subject: [PATCH] fix: multiple paths is not true random (fix #342) --- provisioner.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/provisioner.go b/provisioner.go index ba22720e..e3ce6d85 100644 --- a/provisioner.go +++ b/provisioner.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "io" + "math/rand/v2" "os" "path/filepath" "reflect" @@ -251,11 +252,14 @@ func (p *LocalPathProvisioner) getPathOnNode(node string, requestedPath string, return requestedPath, nil } // if no particular path was requested, choose a random one - path := "" - for path = range paths { - break + i := rand.IntN(len(paths)) + for p := range paths { + if i == 0 { + return p, nil + } + i-- } - return path, nil + return "", fmt.Errorf("never happens, but compiler doesn't know that") } func (p *LocalPathProvisioner) isSharedFilesystem(c *StorageClassConfig) (bool, error) { -- GitLab