Fix ticker memory leak in bulk indexer due to internal flush call resetting the ticker #797
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.
Hello, I discovered that the
time.Ticker
instance within theBulkIndexer
is consuming a bunch of memory in my long running application that creates and closes many instances of theBulkIndexer
. See the following screenshots of a pprof heap visualization that I took of the application (forcing a garbage collection run too).It appears that the
time.Ticker
instance isReset
within theflush
method, thus causing the memory leak. The fix that I have tested and confirmed working is to simply callStop
on the ticker after theflush
call since it is valid to have thatReset
call within theflush
method for other parts of theBulkIndexer
.I would attach another screenshot of pprof, but the
time.Ticker
doesn't show up in the visualization due to its small memory footprint.