Add Source.close/1 callback to prevent hitting file descriptor limits #8
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.
Hey evadne,
thank you very much for this great package, it works fantastically and is a pleasure to work with.
I found one issue where generating large archives from local files (1000+) would crash with
reason: :emfile
(i.e. too many open files).File sources were simply never closed in the Encoder loop.
My fix is to add a new
Source.close/1
callback, which is called after:eof
is received from the source.This also seemed to apply to the URL and Random source, so I implemented matching behaviours there, too.
The tests were a little hard to follow for me, so this is still a work in progress and any advice would be appreciated.
I verified that the problem is fixed regarding file sources, but did not test (other than running
mix test
- which is green) anything regarding URL or Random.Let me know what you think!
Cheers,
Christoph