Please sign in to comment.
Proof of concept fix for JRUBY-5200: configureBlocking free select.
RubyThread.select for both sysread and syswrite is a source of deadlock when 2 operations are running by different Thread. RubyThread.select try to synchronize SelectableChannel.blockingLock first so it cannot be used for different SelectionKey.OP_* operations. This commit copies RubyThread.select to SSLSocket and remove blockingLock. This impl just set SelectableChannel.configureBlocking(false) permanently instead of setting temporarily. SSLSocket requires wrapping IO to be selectable so it should be OK to set configureBlocking(false) permanently I think...
- Loading branch information...
Showing with 68 additions and 1 deletion.