Fix Histogram.AddMetric losing values after single-bucket to array transition #2337
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.
Histogram.AddMetricincorrectly updatedm_singleBucketValueinstead of the array after transitioning from single-bucket optimization to array mode, causing subsequent additions to the original bucket to be lost.Root Cause
The method checked
if (m_singleBucketNum == bucket)before checkingif (m_buckets == null), so after array creation, calls to the original bucket still matched the single-bucket path but the indexer only read from the array.Example failure sequence:
Changes
m_buckets == nullfirst to determine mode before applying single-bucket optimizationm_singleBucketNum = -1after creating array to prevent reentry into single-bucket pathCode Review Note
Review identified a pre-existing bug where
AddScaled'sweightparameter is not applied when the source histogram uses array mode (only applied in single-bucket mode). This is orthogonal to the reported issue and left unmodified per minimal change principle.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.