Fix possible memory leak in ObjectNameAttributeFilter #973
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.
If:
Then the ObjectNameAttributeFilter will cause a memory leak where excludeObjectNameAttributesMap will keep adding information about new beans to the exclude map but will never remove it, keeping information about beans no longer registered in MBeanServer:
I've added similar approach to what is already implemented in JmxMBeanPropertyCache - that is, once we get a new list of beans that we're interested in, remove any old ones from the cache and dynamic attribute filter.
I've also split excludeObjectNameAttributesMap into two maps, one for attributes from config (as we don't want to remove them automatically) and the other one for dynamically added attributes (those should be considered for removal).
This approach will also be relevant when resolving conflicts with #897 (as there the property names from config should be treated as patterns but property names added dynamically should be treated as "literal" - compared with equals).