Currently ruby socket code defaults to always doing a reverse DNS lookup
when it can [ex: once per incoming UDP packet].
This causes “surprising” pauses when the lookup fails, because the DNS
waits 15s to timeout, before passing the packet back to the program,
since the pause is unexpected.
ex: http://betterlogic.com/roger/?p=1646
comment out the do_not_reverse_lookup on the receiver and change the
sender to send to IP127.0.0.255
It works great [no pause]if you set BasicSocket.do_not_reverse_lookup to
true, and is much less surprising. This isn’t the first time I’ve been
bit by ruby’s internal packet DNS lookups and so thought I’d ask for
feedback before suggesting to core that it be turned off by default.
The other benefit is that with DNS lookups, sometimes they succeed, and
sometimes fail, which means that normal code could run into unexpected
pauses when put into production–which is surprising and unwanted,
really.
Thoughts on this one?
Thanks.
On 22 Jun 2009, at 11:41, Roger P. wrote:
pauses when put into production–which is surprising and unwanted,
really.
Thoughts on this one?
Thanks.
I tend to agree with you on this although I’d also suggest that the
option become do_reverse_lookup if it’s going to default to false,
that avoids having to read lots of code peppered with
do_not_reverse_lookup = false when a reverse lookup is desired. Double
negatives are a guaranteed way to scramble frazzled brains
Ellie
raise ArgumentError unless @reality.responds_to? :reason
On 23 Jun 2009, at 01:19, Daniel DeLorme wrote:
I’ve been bit by this reverse lookup in the past. Even when setting
Net::HTTP’s open_timeout, this has no effect on the rDNS lookup so
an operation with a timeout of 1s can actually time out after 15s.
Very confusing.
And really, minimizing unnecessary reverse lookups is better for the
health of the internet in general.
Very true, especially with dynamic DNS with short-ttl zones finally
starting to catch on.
Ellie
raise ArgumentError unless @reality.responds_to? :reason
Eleanor McHugh wrote:
Double
negatives are a guaranteed way to scramble frazzled brains
I am not sure that you didn’t mean to not neglect to avoid not saying
this.
Eleanor McHugh wrote:
Thoughts on this one?
Thanks.
I tend to agree with you on this although I’d also suggest that the
option become do_reverse_lookup if it’s going to default to false, that
avoids having to read lots of code peppered with do_not_reverse_lookup =
false when a reverse lookup is desired. Double negatives are a
guaranteed way to scramble frazzled brains
+1 on both suggestions
I’ve been bit by this reverse lookup in the past. Even when setting
Net::HTTP’s open_timeout, this has no effect on the rDNS lookup so an
operation with a timeout of 1s can actually time out after 15s. Very
confusing.
And really, minimizing unnecessary reverse lookups is better for the
health of the internet in general.
Daniel