-
-
Notifications
You must be signed in to change notification settings - Fork 925
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IO#read_nonblock throwing EOFError with "exception: false" #4827
Comments
Also, dunno if related, but although loop do
r, w = IO.select([r], [w])
r.each do |reader|
begin
read.read_nonb...
rescue EOFError
end
end
end which is another difference with CRuby. |
I believe you are correct in your expectations. I'll have a look. |
If you are able to reproduce it, pass -Xbacktrace.style=full to JRuby and post the resulting trace. It would help me see where it's going wrong. |
I believe I have fixed this in fcd7d73 but I'd like to add or find a test that can trigger this behavior. Any additional information you can provide would be helpful! |
I believe that the backtrace you need is this:
To reproduce this in a script is a bit non-trivial, as this doesn't happen all the time in my tests (just in a particular one, where more than the usual payload passed between sockets). Maybe I can test this again once |
I'm using exceptionless non-blocking IO API with Jruby 9.1.13.0. In a busy loop I have, it returns (predictably)
:wait_readable
, until it doesn't, and I get the message:I thought that, by using
exception: false
, that the nonblocking APIs can't throw exception, but rather,:wait_readable/writable
when buffer is unavailable, andnil
when IO is closed (equivalent toEOFError
in older rubies). In fact, this behaviour is consistent in ruby 2.3.0 and newer.However, I can't seem to find documentation validating this. As of ruby-doc, this is only enforced since 2.4.2, and only for
#read_nonblock
. But I think this is more a case of the docs not being up-to-date.The text was updated successfully, but these errors were encountered: