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 did you implement:
I fixed the bug of race condition in vuls server-mode.
The server-mode runs report.NewDBClient only once the first time.
NewDBClient returns multiple DBs.
At this time, internally execute github.com/kotakanbe/go-cve-dictionary/db.NewDB which returns driver.
After this, The server-mode always execute functions such as NewOvalDB for the same driver .
This driver has the family property (e.g. d. Ovaldb).
After that, server-mode always executes functions like NewOvalDB for the same driver.
So, when a request from different OS is made asynchronously, ovaldb is rewritten.
This fix will generate a DB client for each request.
I added below log in goval-dictionary/db/redis.go.
Below execute log.
Type of change
How Has This Been Tested?
I wrote PoC.
https://github.com/masahiro331/vuls_racecondition
I checked using PoC before and after the pull request.
Using DBs: Redis, Sqlite3 and postgresql.
Checklist:
make fmt
make test
Is this ready for review?: Yes