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.
Strange issues have been reported in riboseinc/enmail#119. Several system calls used to complain about file descriptor issues on a random basis.
It seems that there were some race conditions revolving around how temporary files are managed in this gem. Probably in some situations a temporary file was either partly created/written, or prematurely removed.
Switching from instances of
Tempfile
class to instances ofFile
did help — the former may be removed by garbage collector, whereas the latter must be removed explicitly. Also, these files are now closed properly after writing their content.Thanks to these improvements, EnMail builds now always pass for all stable MRI versions from 2.3 to 2.6. However, builds for
ruby-head
still fail consequently with some file descriptor errors. It is unknown whether it's a regression in Ruby HEAD, or another bug in EnMail, or in this very gem. A thing worth noting is that these builds always fail in the same two examples and LOCs, which is different from previous issues (random failures).