You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Short story: unregisterKey(K key) and unregisterAllKeys() does not unregister the key from Set<K> unlimited, which seems to result in leaks over time.
Longer story:
In our (Spring) application, we dynamically spin up and spin down queues and SimpleMessageListenerContainers as needed. I can describe the workflow in more detail if anyone really cares. After a day or two of decent load, our memory usage tends to grow very large. Analyzing a heap dump showed that the majority of memory was being used by a few hundred thousand ShutdownSignalExceptions and ChannelNs and various other related objects that still had references, all of which led back to this one Set in the WorkPool class.
It seems like a simple solution would be to add two lines which also call unlimited.remove, and I can create a Pull Request if desired, but I'm hoping that someone more familiar with the code can determine if this would cause any problems.
Thanks for all you folks do on this project. It's been fun implementing it into my system.
Thanks for the very fast reply, Michael! I'm trying to set up the pull request, but it's not letting me push my branch -- I think I need at least some write privilege on the repo unless I'm doing something wrong (which I probably am; I'm more used to Gitlab than Github).
Short story:
unregisterKey(K key)
andunregisterAllKeys()
does not unregister the key fromSet<K> unlimited
, which seems to result in leaks over time.Longer story:
In our (Spring) application, we dynamically spin up and spin down queues and
SimpleMessageListenerContainer
s as needed. I can describe the workflow in more detail if anyone really cares. After a day or two of decent load, our memory usage tends to grow very large. Analyzing a heap dump showed that the majority of memory was being used by a few hundred thousandShutdownSignalException
s andChannelN
s and various other related objects that still had references, all of which led back to this oneSet
in theWorkPool
class.It seems like a simple solution would be to add two lines which also call
unlimited.remove
, and I can create a Pull Request if desired, but I'm hoping that someone more familiar with the code can determine if this would cause any problems.Thanks for all you folks do on this project. It's been fun implementing it into my system.
Link to feasible patch: https://gist.github.com/xathien/ec9ca35224868a524873
The text was updated successfully, but these errors were encountered: