Prevent fd leak in random slasher tests #6254
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.
Issue Addressed
Presently the random slasher tests crash after a few thousand iterations with an error about file descriptor exhaustion. The reason for this is that we use
Box::leak
to give the slasher database a'static
lifetime. As a result, if more than 1SlasherDB
is ever created, its destructor will not run and the open files will never be closed. Even though thetempdir
will delete the DB directory containing the files, this does not free theProposed Changes
Reuse the same database for each test rather than creating a new one. The contents of the database are deleted completely between iterations. Some refactoring to allow changing the
config
between iterations was required.Additional Info
You can reproduce the crash after a few minutes running this command on
unstable
:After this PR, it can run indefinitely.