Free ephemeral resources used for scanning #70
Merged
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.
When we scan results, we get a slice of
*openerAtReader
s, one for each result task. We read from each reader sequentially. When we are done with a given reader, we retain some of the resources used when reading from it, most notablygob
decode buffers. As we scan, we accumulate these defunct buffers, and our memory footprint grows.This happens for two reasons:
q = q[1:]
. However, we do not clear the backing array reference to the reader.sliceioReader
, which in turn holds thegob
decoder.Fixing either would eliminate the specific scan leak. Fix both, as I think it's the correct behavior.