- Notifications
You must be signed in to change notification settings - Fork34
✅🚧 Add JRuby to CI#529
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
2445096 tobd25f1aComparef391498 tob144058Compareheadius commentedOct 8, 2025
Hey checking back in after a long time. I'd like to help get this green... have you looked into the failures at all? |
nevans commentedOct 9, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
@headius Thanks! I haven't looked into it recently, beyond rebasing the branch and verifying it still had the same issues... the tests that (reliably) fail in CI are all passing locally for me. That certainly slows down my debugging ability. I don't remember for sure, but I think that some of theother tests that are already omitted or pending in this branch mayalso pass locally (or maybe they're flaky?). I'd prefer to fix all of them and omit none: omitting every test that actually makes a connection doesn't give me much confidence. But, for the ratchet effect, getting JRuby into CI with a bunch of critical tests omitted is probably better than not testing it at all. The following is going off of memory the last time I looked into this... and I didn't have time to fully test my hypothesis, so I may be completely wrong, buuuut (caveat's aside)... Ithink the biggest source of test failures are exceptions from When But I might be misunderstanding what the code does and biased by what Iwant it to do. 😉 I found some issues in the b.r-l.o tracker that led me to think maybe it didn't or doesn't work the way I assume. So, I looked to see if there was a test or a spec, and there was (and I think it was written by you, so thanks!). But (as far as I can tell) the spec for this doesn't distinguish between an error that's raised by it'raises an IOError with a clear message'domatching_exception=nil->doIOSpecs::THREAD_CLOSE_RETRIES.timesdoread_io,write_io=IO.pipegoing_to_read=falsethread=Thread.newdobegingoing_to_read=trueread_io.readrescueIOError=>ioeifioe.message ==IOSpecs::THREAD_CLOSE_ERROR_MESSAGEmatching_exception=ioeend# try againendend# best attempt to ensure the thread is actually blocked on readThread.passuntilgoing_to_read &&thread.stop?sleep(0.001)read_io.close# <--------------------------- does this raise the exception?thread.joinwrite_io.close# <--------------------------- does this raise the exception?matching_exception&.tap{|ex|raiseex}# <---- or does this raise the exception?endend.shouldraise_error(IOError,IOSpecs::THREAD_CLOSE_ERROR_MESSAGE)end My hypothesis is that CRuby's With all of that said, even if JRuby's |
nevans commentedOct 9, 2025
Okay, so looking into it just now, I think my memory or interpretation (or both!) was off by a bit: any blocking threads are notifiedbefore the file descriptor is completely cleared. That does introduce the possibility that multiple threads could call Nevertheless, it still seems to me that, the closer doesn't add itself blocking list for that IO, so it should never be interrupted with that exception. And, after all of the (other) blocking threads have been removed from the blocking list, the closer thread gets to do its thing while keeping the GVL. Regardless, I'll repeat myself on this:
|
Using jruby-head to get some bugfixes.
Uh oh!
There was an error while loading.Please reload this page.
Combined with#528, this replaces#470, andfixes#454.