[ISSUE #819] Fix sis.samplingInSeconds and sis.printAtMinutes() running in different goroutines cause DATA RACE #820
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the purpose of the change
Fix DATA RACE when running the executable file generated by
go build -race
Brief changelog
send csListLock *sync.Mutex to computeStatsData for lock csList
Verifying this change
How to reproduce
Run the following test with
go test -race
The DATA RACE will print on terminal
When run statsItemSet
init()
will start several goroutines to runsis.samplingInSeconds()
andsis.printAtMinutes()
.The
samplingInSeconds()
func will writecsListMinute
While
printAtMinutes()
func callcomputeStatsData()
will readcsListMinute
In
samplingInSeconds()
usecsListMinuteLock
whilecomputeStatsData()
use a global Mutex to lock. So read and write in different goroutine will cause DATA RACE.How to fix
Change the
computeStatsData()
func parameters as following will fix the DATA RACEthe callers change to
When changed the code, run the previous test won't have DATA RACE
Follow this checklist to help us incorporate your contribution quickly and easily. Notice,
it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR
.[ISSUE #123] Fix UnknownException when host config not exist
. Each commit in the pull request should have a meaningful subject line and body.