Fixing nowarn flakiness - warnings config is stored by compound key #9162
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.
Fixes #9133
Context
NoWarn
has become flaky in all build configurations and frequently not suppresing given warnings as errors.During analysis I have found out our
LoggingService
is storing suppressed warning codes list by key which was weakly hashed with lots of possible collisions in expected input ranges.When any project finishes its Warning configuration is removed from
LogginService warnign configs dictionary
, if just finished project have had collision key it removed the "other-guy" data.Changes Made
Changed to compound key as
readonly record struct
.Since we have smallish numbers of warnings during build I do not believe it have measurable perf degradation.
Testing
Notes
Every time junior developer have had come to me with possible root cause "What if it is hash collision" I hushed them with automatic "Oh. please".
But this time it really is hash collision :-)