From c8b181843c24a28fc042a4f23538b23bb855833f Mon Sep 17 00:00:00 2001 From: Niko Kurtti Date: Fri, 12 Apr 2019 18:35:17 +0300 Subject: [PATCH] Fix reading and writing of the results at the same time --- cli/cli.go | 5 ++--- infrastructure/aws/aws.go | 2 ++ result/result.go | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cli/cli.go b/cli/cli.go index 7510d2c0..6d74385f 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -326,6 +326,7 @@ outer: if !ok { break outer } + result.Lock() currentResult = *result if firstTime && render { clearLogo() @@ -341,9 +342,7 @@ outer: y = renderRegion(regionsData[region], y) y++ } - } - if render { y = 0 var percentDone float64 if test.Requests > 0 { @@ -355,7 +354,7 @@ outer: termbox.Flush() } - + result.Unlock() case <-sigChan: break outer } diff --git a/infrastructure/aws/aws.go b/infrastructure/aws/aws.go index edec90e0..e53f2241 100644 --- a/infrastructure/aws/aws.go +++ b/infrastructure/aws/aws.go @@ -66,7 +66,9 @@ func (infra *AwsInfrastructure) Receive(results chan *result.LambdaResults) { if lambdaResults != nil { for _, lambdaResult := range lambdaResults { lambdaAggregate := &data.Lambdas[lambdaResult.RunnerID] + data.Lock() result.AddResult(lambdaAggregate, lambdaResult) + data.Unlock() results <- data } if data.AllLambdasFinished() { diff --git a/result/result.go b/result/result.go index dd059901..bece2945 100644 --- a/result/result.go +++ b/result/result.go @@ -4,6 +4,7 @@ import ( "math" "sort" "time" + "sync" "github.com/goadapp/goad/api" "github.com/goadapp/goad/goad/util" @@ -31,6 +32,7 @@ type AggData struct { // LambdaResults type type LambdaResults struct { Lambdas []AggData + sync.RWMutex } // Regions the LambdaResults were collected from