fix goroutine leak on fetch sleep for write requests #2124
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.
Main problem: The fetch goroutine in some cases ends with a sleep and freezes all allocated objects in its runtime context, even if the cancelChannel was triggered.
This fix is essentially a follow-up to PR 1644. That PR fixed the goroutine leak for read requests, but the issue still persists for write requests. This fix applies the same pattern already used for read requests in PR 1644 to the write requests.
Reproduction of the most severe case:
Observed behavior: Every time the agent renews its token, we will see growth in newly allocated memory. This growth is proportional to the size of the non-leased secrets and their quantity in the Vault agent template config section.