ruby suggestion:do_not_reverse_lookup = true as default

R

Roger Pack

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.
 
E

Eleanor McHugh

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.

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

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
 
D

Daniel DeLorme

Eleanor said:
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.

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
 
E

Eleanor McHugh

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

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
 
L

Lloyd Linklater

Eleanor said:
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. :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,149
Latest member
Vinay Kumar Nevatia0
Top