Skip to content
Snippets Groups Projects
Commit 19f276af authored by capossele's avatar capossele
Browse files

:bug: fix data races on spammer

parent 963f23ec
No related branches found
No related tags found
No related merge requests found
......@@ -14,22 +14,24 @@ import (
)
var spamming = false
var spammingMutex sync.Mutex
var startMutex sync.Mutex
var shutdownSignal chan int
var shutdownSignal chan struct{}
var done chan struct{}
var sentCounter = uint(0)
func Start(tps uint) {
startMutex.Lock()
func init() {
shutdownSignal = make(chan struct{})
done = make(chan struct{})
}
if !spamming {
shutdownSignal = make(chan int, 1)
func Start(tps uint) {
spammingMutex.Lock()
spamming = true
spammingMutex.Unlock()
func(shutdownSignal chan int) {
daemon.BackgroundWorker("Transaction Spammer", func() {
for {
start := time.Now()
totalSentCounter := int64(0)
......@@ -39,6 +41,7 @@ func Start(tps uint) {
return
case <-shutdownSignal:
done <- struct{}{}
return
default:
......@@ -69,24 +72,16 @@ func Start(tps uint) {
}
}
}
}
})
}(shutdownSignal)
spamming = true
}
startMutex.Unlock()
}
func Stop() {
startMutex.Lock()
spammingMutex.Lock()
if spamming {
close(shutdownSignal)
shutdownSignal <- struct{}{}
// wait for spammer to be done
<-done
spamming = false
}
startMutex.Unlock()
spammingMutex.Unlock()
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment