Add work queue bound on LicenseException retries in RPMConnectionServ… #1606
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.
Fixes #1428
This PR addresses
OutOfMemory
exceptions that were reported during rotation to an invalid license key. The cause of the memory leak was found to be excessive creation ofRPMConnectionTasks
. To mitigate the issue, the number ofRPMConnectionTasks
created during processing of aLicenseException
is now bounded.ScheduledExecutorService
is replaced with aScheduledThreadPoolExecutor
, in order to get access to the size of its work queue.LicenseException
handler in thedoConnect
method ofRPMService
limitsreconnect
attempts when the work queue acquires a certain number of tasks.There is no way for the agent to recover from a bad license key, so although these mitigation steps will prevent a memory leak, a JVM restart is still required to get the agent back up.