[ruby-core:86039] [Ruby trunk Feature#4560] [PATCH] lib/net/protocol.rb: avoid exceptions in rbuf_fill

From: mame@...
Date: 2018-03-08 09:09:56 UTC
List: ruby-core #86039
Issue #4560 has been updated by mame (Yusuke Endoh).

Assignee changed from akr (Akira Tanaka) to normalperson (Eric Wong)

@normalperson, I think that this issue has been fixed more elegantly by introducing `read_nonblock(exception: false)`.  Am I right?

----------------------------------------
Feature #4560: [PATCH] lib/net/protocol.rb: avoid exceptions in rbuf_fill
https://bugs.ruby-lang.org/issues/4560#change-70900

* Author: normalperson (Eric Wong)
* Status: Assigned
* Priority: Normal
* Assignee: normalperson (Eric Wong)
* Target version: 
----------------------------------------
Blindly hitting IO#read_nonblock() and raising is expensive due
to two factors:

1) method cache being scanned/cleared when the IO::WaitReadable
extended class is GC-ed
2) backtrace generation

This reduces the likelyhood of an IO::WaitReadable exception,
but spurious wakeup can still occur due to bad TCP checksums.

This optimization only applies to non-OpenSSL sockets.  I am
using IO#wait here instead of IO.select() since IO#wait is not
available on OpenSSL sockets.

---Files--------------------------------
0001-lib-net-protocol.rb-avoid-exceptions-in-rbuf_fill.patch (1.3 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next