[feature] Prune timelines once per hour to plug memory leak #1117
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.
Add
Start()
function to timeline manager, which kicks off a cleanup goroutine.Once per hour, this goroutine iterates through all timelines in the manager's sync map.
For each timeline, it will call the Prune function. Prune checks if the timeline hasn't been accessed for an hour or more. If so, it will lock the timeline, remove entries from the back, and then unlock the timeline.
Also some small bits and bobs of tidying up.
Closes #394 , though we'll definitely want to switch to a better solution when we have time, this is a good-enough temporary fix :)