Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Several Net::HTTP methods raise Net::* exceptions but the doc claims they will not #92

Open
cbetti opened this issue May 19, 2020 · 0 comments

Comments

@cbetti
Copy link

cbetti commented May 19, 2020

This applies to all the flavors of request_VERB, but here are a few examples of Net::* exceptions being raised with Net::HTTP#request_post, run against MRI Ruby 2.5.5. I suspect any exception which would not be represented by a legitimate HTTP response falls into this category:

Net::OpenTimeout

	 8: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1412:in `request_post'
	 7: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1458:in `request'
	 6: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:909:in `start'
	 5: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:920:in `do_start'
	 4: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:935:in `connect'
	 3: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/timeout.rb:103:in `timeout'
	 2: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:937:in `block in connect'
	 1: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:937:in `open'
/home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:937:in `initialize': execution expired (Net::OpenTimeout)

Net::ReadTimeout

	12: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1412:in `request_post'
	11: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1458:in `request'
	10: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:910:in `start'
	 9: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1460:in `block in request'
	 8: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1467:in `request'
	 7: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1494:in `transport_request'
	 6: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1494:in `catch'
	 5: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1497:in `block in transport_request'
	 4: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http/response.rb:29:in `read_new'
	 3: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http/response.rb:40:in `read_status_line'
	 2: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/protocol.rb:167:in `readline'
	 1: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/protocol.rb:157:in `readuntil'
/home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/protocol.rb:181:in `rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)

It may be worth noting in the doc that other communications-related exceptions are raised, though this is not a strict doc contradiction:

Errno::ENETUNREACH

	 8: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1412:in `request_post'
	 7: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:1458:in `request'
	 6: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:909:in `start'
	 5: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:920:in `do_start'
	 4: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:935:in `connect'
	 3: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/timeout.rb:103:in `timeout'
	 2: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/timeout.rb:93:in `block in timeout'
	 1: from /home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:936:in `block in connect'
/home/chrisbetti/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect': Failed to open TCP connection to 203.0.113.1:80 (Network is unreachable - connect(2) for "203.0.113.1" port 80) (Errno::ENETUNREACH)

I spot-checked Ruby 2.5.5 and 2.7.1 documentation, and the documentation error is present in both places.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant