Jayg came across an interesting issue which we talked about on irc #deltacloud last night... i've spent some more (than I should have for sure) time on it today and tracked it down to weirdness in net/http. I'm not convinced its a real problem but thought i'd post it here to see if anyone else has any thoughts about it.

Problem description/replication:

*start deltacloud when your network is down and try to (e.g.) get a list of images, obviously you get " (getaddrinfo: Name or service not known)".

*now while deltacloud still running, bring network back up, and try same request. You get the same result, i.e. " (getaddrinfo: Name or service not known)", even though the network is now up.

Weirdly, if your network is up when deltacloud starts you don't get this. In other words:

* start deltacloud as normal with your network up, make a request (which is successful),

* bring network down, make a request, request fails

* bring network back up, make a request, request successful again.


After much digging around, I've tracked it down to net/http Net::HTTP.connect (line 560 in /usr/lib/ruby/1.8/net/http.rb) where the TCPSocket is opened. Simple proof, try this in irb (make sure you use 'irb -rubygems' cos we need to require net etc).

* Bring network down, open a terminal and do 'irb -rubygems', paste the following:

  require "net/http"
  require "uri"

  uri = URI.parse("http://incubator.apache.org/deltacloud/";)
  http = Net::HTTP.new(uri.host, uri.port)
  request = Net::HTTP::Get.new(uri.request_uri)
  response = http.request(request)

*this will fail since network is down. Without exiting irb session, bring network up and try the code again, will still fail.


marios

Reply via email to