Close any open selectors when tearing down a runtime. #3222
+62
−15
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.
This fixes a runtime leak in embedded scenarios where a runtime may
never get garbage collected because it has a thread blocked on a
select call. This leak exists in JRuby 1.7.x as well, but for some
reason I'm seeing it more often in JRuby 9.x when running TorqueBox 3
integration tests. Perhaps there is more IO that uses select in 9.x
than 1.7.x?
Here's a gist with a fairly simple reproducer and results on 1.7.21, 9.0.0.0, and 9.0.1.0-SNAPSHOT with this patch applied - https://gist.github.com/bbrowning/3cbb3901d4facd7fc99f