fix(disk-buffer): Expire metric tracking information in the right place #17284
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.
Summary
The current code tries to cleanup the tracking information cache during deserialization. That is, if the refcount of the metric is one on deserialization the tracking information is removed from the cache. However, if that metric cannot be sent it is pushed back into (or rather left in) the buffer but now the required tracking information is gone. In turn the metric is skipped due to missing tracking information and the input is potentially never notified.
This PR moves the cache cleanup into the refcount decrementation function and only removes the entry if notifications are sent, i.e. if the refcount reaches zero.
Checklist
Related issues
resolves #16981