From 50cd656cf36e11921307f95ffca49b1a2796366a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Mon, 5 Jul 2021 22:06:28 +0100 Subject: [PATCH] fix(backend): use randomcolor fork Forked code doesn't require any locks --- go.mod | 2 +- go.sum | 4 ++-- internal/transform/colors.go | 11 +++-------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index f2c05fc84..38c829bba 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/go-openapi/validate v0.20.2 github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-cmp v0.5.6 - github.com/hansrodtang/randomcolor v0.0.0-20160512071917-d27108b3d7a5 github.com/hashicorp/golang-lru v0.5.4 github.com/jarcoal/httpmock v1.0.8 github.com/knadh/koanf v1.1.1 @@ -28,6 +27,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 github.com/prometheus/client_golang v1.11.0 github.com/prometheus/common v0.29.0 + github.com/prymitive/randomcolor v0.0.0-20210705210145-26c3401033a6 github.com/rogpeppe/go-internal v1.8.0 github.com/rs/zerolog v1.23.0 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index e01106086..c8425d883 100644 --- a/go.sum +++ b/go.sum @@ -326,8 +326,6 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hansrodtang/randomcolor v0.0.0-20160512071917-d27108b3d7a5 h1:9WT/rQ2tZI0TBZhBsA/dYU1bdI2QKaUzQ3X6YDwaLUY= -github.com/hansrodtang/randomcolor v0.0.0-20160512071917-d27108b3d7a5/go.mod h1:XvzgNvkcPBKMxeywFlPioejZ5ulXi/GMLZDoBw915FA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -512,6 +510,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prymitive/randomcolor v0.0.0-20210705210145-26c3401033a6 h1:zL1c7Tzs1zTkak2si4V5Y0kop6Bue7UMN4ML68PGpIg= +github.com/prymitive/randomcolor v0.0.0-20210705210145-26c3401033a6/go.mod h1:FnzxethsFNTR5+dT5nOGHEmV7DS7U6ml/kw2HFv5Q+8= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= diff --git a/internal/transform/colors.go b/internal/transform/colors.go index 3f398120d..d2939a060 100644 --- a/internal/transform/colors.go +++ b/internal/transform/colors.go @@ -5,19 +5,16 @@ import ( "image/color" "io" "math/rand" - "sync" "github.com/prymitive/karma/internal/config" "github.com/prymitive/karma/internal/models" "github.com/prymitive/karma/internal/slices" - "github.com/hansrodtang/randomcolor" + "github.com/prymitive/randomcolor" "github.com/rs/zerolog/log" plcolors "gopkg.in/go-playground/colors.v1" ) -var lock sync.RWMutex - func labelToSeed(key string, val string) int64 { h := sha1.New() _, _ = io.WriteString(h, key) @@ -31,10 +28,8 @@ func labelToSeed(key string, val string) int64 { } func colorFromKeyVal(key, val string) color.Color { - lock.Lock() - defer lock.Unlock() - rand.Seed(labelToSeed(key, val)) - return randomcolor.New(randomcolor.Random, randomcolor.LIGHT) + r := rand.New(rand.NewSource(labelToSeed(key, val))) + return randomcolor.New(r, randomcolor.Random, randomcolor.LIGHT) } func rgbToBrightness(r, g, b uint8) int32 {