fix: concurrency issues in Metrics #1001
Merged
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.
Issue number: #1000
Summary
Fixes concurrency issues in the Metrics utility that were causing
IndexOutOfRangeException
andInvalidOperationException
in multi-threaded environments.Issues Fixed
FirstOrDefault
operations were failing when collections were modified concurrentlyCustomMetadata
dictionary was not thread-safe, causingIndexOutOfRangeException
during concurrent accessChanges Made
Core Fixes
GetExistingMetric
helper methods inMetrics.cs
andMetricDirective.cs
that use traditional for-loops instead ofFirstOrDefault
CustomMetadata
fromDictionary<string, object>
toConcurrentDictionary<string, object>
inMetadata.cs
ArgumentOutOfRangeException
during concurrent collection modificationsUser experience
Checklist
Please leave checklist items unchecked if they do not apply to your change.
Is this a breaking change?
RFC issue number:
Checklist:
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.