From a84a81b6e1175b653f4f3c234c6d45edec3d1ebd Mon Sep 17 00:00:00 2001 From: kuzxnia Date: Mon, 22 Jul 2024 08:13:58 +0200 Subject: [PATCH 1/2] fixed rand.Source is not concurrent safe --- lbot/schema/generator.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lbot/schema/generator.go b/lbot/schema/generator.go index 985aa4a..6d8ecbf 100644 --- a/lbot/schema/generator.go +++ b/lbot/schema/generator.go @@ -4,6 +4,7 @@ import ( "errors" "math/rand" "strings" + "sync" "time" "github.com/go-faker/faker/v4" @@ -118,7 +119,10 @@ const ( letterIdxMax = 63 / letterIdxBits // # of letter indices fitting in 63 bits ) -var src = rand.NewSource(time.Now().UnixNano()) +var ( + src = rand.NewSource(time.Now().UnixNano()) + mu sync.Mutex +) func randStringBytes(n int) string { sb := strings.Builder{} @@ -126,7 +130,9 @@ func randStringBytes(n int) string { // A src.Int63() generates 63 random bits, enough for letterIdxMax characters! for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; { if remain == 0 { + mu.Lock() cache, remain = src.Int63(), letterIdxMax + mu.Unlock() } if idx := int(cache & letterIdxMask); idx < len(letterBytes) { sb.WriteByte(letterBytes[idx]) From ae629de3f13bb53cb439c26c890691242f05a9f6 Mon Sep 17 00:00:00 2001 From: kuzxnia Date: Mon, 22 Jul 2024 08:14:48 +0200 Subject: [PATCH 2/2] docs typo --- docs/getting_started/quick-start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/quick-start.md b/docs/getting_started/quick-start.md index c97c7cc..e0ce2d8 100644 --- a/docs/getting_started/quick-start.md +++ b/docs/getting_started/quick-start.md @@ -8,7 +8,7 @@ loadbot start-agent -f config_file.json 2. Start and watch the workload using the loadbot client: ```bash -loadbot start-agent --progress +loadbot start --progress Job "My first job" |██████████████████████████████████████████████████████████████████| 30/30S 50RPS 1509REQ ```