From f5e9c0473c37bdef951238de63f35db5af176acd Mon Sep 17 00:00:00 2001 From: Mikhail Mazurskiy Date: Thu, 11 Oct 2018 21:26:28 +1100 Subject: [PATCH] Remove unnecessary random re-seeding Package k8s.io/apimachinery/pkg/util/rand seeds the random based on time during the package initialization, so no need to re-seed it. --- pkg/volume/flocker/flocker_util.go | 2 -- staging/src/k8s.io/apimachinery/pkg/util/rand/rand.go | 7 +++++++ test/e2e/storage/vsphere/BUILD | 1 + test/e2e/storage/vsphere/vsphere_utils.go | 3 +-- test/images/logs-generator/logs_generator.go | 1 - 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/volume/flocker/flocker_util.go b/pkg/volume/flocker/flocker_util.go index 95188acdac4..2dd5221bc9f 100644 --- a/pkg/volume/flocker/flocker_util.go +++ b/pkg/volume/flocker/flocker_util.go @@ -18,7 +18,6 @@ package flocker import ( "fmt" - "time" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/rand" @@ -68,7 +67,6 @@ func (util *FlockerUtil) CreateVolume(c *flockerVolumeProvisioner) (datasetUUID } // select random node - rand.Seed(time.Now().UnixNano()) node := nodes[rand.Intn(len(nodes))] glog.V(2).Infof("selected flocker node with UUID '%s' to provision dataset", node.UUID) diff --git a/staging/src/k8s.io/apimachinery/pkg/util/rand/rand.go b/staging/src/k8s.io/apimachinery/pkg/util/rand/rand.go index 2dd10a78eeb..82a473bb146 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/rand/rand.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/rand/rand.go @@ -30,6 +30,13 @@ var rng = struct { rand: rand.New(rand.NewSource(time.Now().UnixNano())), } +// Int returns a non-negative pseudo-random int. +func Int() int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Int() +} + // Intn generates an integer in range [0,max). // By design this should panic if input is invalid, <= 0. func Intn(max int) int { diff --git a/test/e2e/storage/vsphere/BUILD b/test/e2e/storage/vsphere/BUILD index 44b62b4e0e4..8d0e22c106d 100644 --- a/test/e2e/storage/vsphere/BUILD +++ b/test/e2e/storage/vsphere/BUILD @@ -46,6 +46,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", diff --git a/test/e2e/storage/vsphere/vsphere_utils.go b/test/e2e/storage/vsphere/vsphere_utils.go index c022ba90f7c..99e61e268cf 100644 --- a/test/e2e/storage/vsphere/vsphere_utils.go +++ b/test/e2e/storage/vsphere/vsphere_utils.go @@ -19,7 +19,6 @@ package vsphere import ( "context" "fmt" - "math/rand" "path/filepath" "regexp" "strings" @@ -37,6 +36,7 @@ import ( storage "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" @@ -747,7 +747,6 @@ func GetReadySchedulableNodeInfos() []*NodeInfo { // and it's associated NodeInfo object is returned. func GetReadySchedulableRandomNodeInfo() *NodeInfo { nodesInfo := GetReadySchedulableNodeInfos() - rand.Seed(time.Now().Unix()) Expect(nodesInfo).NotTo(BeEmpty()) return nodesInfo[rand.Int()%len(nodesInfo)] } diff --git a/test/images/logs-generator/logs_generator.go b/test/images/logs-generator/logs_generator.go index d11a0025e54..b5ab2bc9533 100644 --- a/test/images/logs-generator/logs_generator.go +++ b/test/images/logs-generator/logs_generator.go @@ -60,7 +60,6 @@ func main() { // Outputs linesTotal lines of logs to stdout uniformly for duration func generateLogs(linesTotal int, duration time.Duration) { delay := duration / time.Duration(linesTotal) - rand.Seed(time.Now().UnixNano()) ticker := time.NewTicker(delay) defer ticker.Stop()