It looks like the Mac OS X 10.5.3 upgrade breaks DRb when it's trying to open a TCPSocket.
Looking into it now, but be warned:
/opt/local/lib/ruby/1.8/drb/drb.rb:865:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError) from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open' from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open_server'
I'm running into the same problem too having just upgraded. Is there a solution?
Eric
Kurt Schrader wrote: > It looks like the Mac OS X 10.5.3 upgrade breaks DRb when it's trying to > open a TCPSocket.
> Looking into it now, but be warned:
> /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `initialize': getaddrinfo: > nodename nor servname provided, or not known (SocketError) > from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open' > from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open_server'
Eric Ly wrote: > I'm running into the same problem too having just upgraded. Is there a > solution?
> Eric
> Kurt Schrader wrote: >> It looks like the Mac OS X 10.5.3 upgrade breaks DRb when it's trying to >> open a TCPSocket.
>> Looking into it now, but be warned:
>> /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `initialize': getaddrinfo: >> nodename nor servname provided, or not known (SocketError) >> from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open' >> from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open_server'
Kurt Schrader wrote: > No solution yet, but it looks like something has changed in some > underlying networking library, as base socket handing methods seem to be > broken:
Damn, I need a fix bad -- Either that or I'm re-installing my entire OS X machine to get rid of 10.5.3.
I'll help anyway I can, but I'm not good with the underlyings.
I've not done too much Ruby socket programming, but it seems to be that it doesn't like 0 as a service number, because it is interpreting it as the real service 0, instead of the empty service... if you use nil instead it works fine... you might be able to patch dRb to use that as a work around.
irb(main):001:0> require 'socket' => true irb(main):011:0> Socket.getaddrinfo(Socket.gethostname, 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) SocketError: getaddrinfo: nodename nor servname provided, or not known from (irb):11:in `getaddrinfo' from (irb):11 from :0 irb(main):012:0> Socket.getaddrinfo(Socket.gethostname, nil, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) => [["AF_INET", 0, "192.168.1.95", "192.168.1.95", 2, 1, 6]]
Kurt Schrader wrote: > No solution yet, but it looks like something has changed in some > underlying networking library, as base socket handing methods seem to be > broken:
> [kschrader@einstein:~]$ irb >>> require 'socket' > => true >>> Socket.getaddrinfo(Socket.gethostname, 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) > SocketError: getaddrinfo: nodename nor servname provided, or not known > from (irb):2:in `getaddrinfo' > from (irb):2
> Eric Ly wrote: >> I'm running into the same problem too having just upgraded. Is there a >> solution?
>> Eric
>> Kurt Schrader wrote: >>> It looks like the Mac OS X 10.5.3 upgrade breaks DRb when it's trying to >>> open a TCPSocket.
>>> Looking into it now, but be warned:
>>> /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `initialize': getaddrinfo: >>> nodename nor servname provided, or not known (SocketError) >>> from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open' >>> from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open_server'
Thanks for the report, we are of course very sorry about that. Ruby didn't change in Mac OS X 10.5.3, so we are currently investigating possible regressions in the underlying frameworks. We will let you know.
Following Andy's idea, what about the following as a temporary fix? Seems to work for DRb servers with a port of 0 (which seems to be the default). Apparently DRb servers which explicitly bind to a non 0 port are not affected by this regression.
class DRb::DRbTCPSocket class << self alias parse_uri_orig parse_uri def parse_uri(*args) ary = parse_uri_orig(*args) ary[1] = nil if ary[1] == 0 ary end end end
On Wed, May 28, 2008 at 10:11 PM, Andy Keep <ak...@robotman.org> wrote: > I've not done too much Ruby socket programming, but it seems to be that > it doesn't like 0 as a service number, because it is interpreting it as > the real service 0, instead of the empty service... if you use nil > instead it works fine... you might be able to patch dRb to use that as a > work around.
> irb(main):001:0> require 'socket' > => true > irb(main):011:0> Socket.getaddrinfo(Socket.gethostname, 0, > Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) > SocketError: getaddrinfo: nodename nor servname provided, or not known > from (irb):11:in `getaddrinfo' > from (irb):11 > from :0 > irb(main):012:0> Socket.getaddrinfo(Socket.gethostname, nil, > Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) > => [["AF_INET", 0, "192.168.1.95", "192.168.1.95", 2, 1, 6]]
> Kurt Schrader wrote: >> No solution yet, but it looks like something has changed in some >> underlying networking library, as base socket handing methods seem to be >> broken:
>> [kschrader@einstein:~]$ irb >>>> require 'socket' >> => true >>>> Socket.getaddrinfo(Socket.gethostname, 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) >> SocketError: getaddrinfo: nodename nor servname provided, or not known >> from (irb):2:in `getaddrinfo' >> from (irb):2
>> Eric Ly wrote: >>> I'm running into the same problem too having just upgraded. Is there a >>> solution?
>>> Eric
>>> Kurt Schrader wrote: >>>> It looks like the Mac OS X 10.5.3 upgrade breaks DRb when it's trying to >>>> open a TCPSocket.
>>>> Looking into it now, but be warned:
>>>> /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `initialize': getaddrinfo: >>>> nodename nor servname provided, or not known (SocketError) >>>> from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open' >>>> from /opt/local/lib/ruby/1.8/drb/drb.rb:865:in `open_server'
I put this just before "Rails::Initializer.run(:set_load_path)" in config/boot.rb
======= # HACK require 'drb' class DRb::DRbTCPSocket class << self alias parse_uri_orig parse_uri def parse_uri(*args) ary = parse_uri_orig(*args) ary[1] = nil if ary[1] == 0 ary end end end ======= -- Posted via http://www.ruby-forum.com/.
Blaz Rubi wrote: > I put this just before "Rails::Initializer.run(:set_load_path)" in > config/boot.rb
> ======= > # HACK > require 'drb' > class DRb::DRbTCPSocket > class << self > alias parse_uri_orig parse_uri > def parse_uri(*args) > ary = parse_uri_orig(*args) > ary[1] = nil if ary[1] == 0 > ary > end > end > end > =======
Anyone else get errors from inserting this code?
if you place it in the LINE before "Rails::Initializer.run(:set_load_path)" I got a syntax error
script/server:2:in `require': ./script/../config/boot.rb:41: class definition in method body (SyntaxError) from script/server:2
which makes sense.
if you place it outside of the Boot Class you get a SystemStackError
/script/../config/boot.rb:43:in `parse_uri_orig': stack level too deep (SystemStackError) from ./script/../config/boot.rb:43:in `parse_uri_orig' from /Users/lorgio/Sites/gawkk/config/boot.rb:43:in `parse_uri' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/drb /drb.rb:874:in `uri_option' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/drb /drb.rb:780:in `uri_option' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/drb /drb.rb:778:in `each' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/drb /drb.rb:778:in `uri_option' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/drb /drb.rb:1044:in `initialize' from /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/session/ drb_store.rb:8:in `new' ... 51 levels... from /Library/Ruby/Gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39 from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `gem_original_require' from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:27:in `require' from script/server:3
Anyone get this working? Am I placing this in the wrong place? or is there something I missed? -- Posted via http://www.ruby-forum.com/.
> Incase you get errors and cannot get the hack above, try putting it in > the environment.rb file INSIDE the config block.
Yeah that doesn't work either.
A) INSIDE config block of environment.rb,
B) Before the "Rails::Initializer.run(:set_load_path)" line in boot.rb.
Neither A or B work.
Any other ideas?
/script/../config/boot.rb:48: uninitialized constant DRb (NameError) from script/server:2:in `require' from script/server:2 -- Posted via http://www.ruby-forum.com/.
Davis Kitchel wrote: > Anyone else having trouble?
Yes. I'm having problems with backgroundrb too, even with the hack.
I'm running Ruby out of MacPorts and it looks like a lot of others in this thread are too.
Is this a problem for those running the version of Ruby included with Mac OS X as well? Looks like Lorgio Jimenez was running into some problems using Mac OS X's Ruby.
% /usr/bin/ruby.orig -r socket -e "TCPServer.open('localhost', 0)" -e:1:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError) from -e:1:in `open' from -e:1
> Does anyone know if/when this is going to be fixed?
Keep in mind that I have almost no experience with socket programming, but I have submitted a patch for MacPorts under this ticket. Use at your own peril! It seems to work for me, but your mileage may vary!
I just thought I'd tell people what I ended up doing to solve the problem so that they might avoid some of the problems I ran into.
I downgraded to 10.5.0 via my leopard install cd using the preserve perferences option.
I was hoping it'd leave everything the same, just downgrade the system, so all my filesystems would be intact (/usr/local/src, bin etc etc.)
Wrong assumption. They were scattered all over a folder that was created called "Previous System"
At first I thought I could piece it all together, but no way!. It was like a bomb went off and scattered my development environment all over the place with no discernible logic.
So
I rebuilt my whole environment from scratch - gems, mysql, ruby, rails, subversion etc etc etc.
Total nightmare.
If you can find a way to patch the problem until apple fixes it - do. -- Posted via http://www.ruby-forum.com/.
Andy Keep wrote: > I've not done too much Ruby socket programming, but it seems to be that > it doesn't like 0 as a service number, because it is interpreting it as > the real service 0, instead of the empty service... if you use nil > instead it works fine... you might be able to patch dRb to use that as a > work around.
Looks to me like this might not be the reason, as I was able to get it to work by using 127.0.0.1 instead of localhost:
Having lots of problems with this bug. Tried some of the fixes suggested in this thread but with no luck. Any idea when we might be getting a fix? -- Posted via http://www.ruby-forum.com/.
Looks like this has re-surfaced in 10.6 (Snow Leopard). Fresh install and I can't start drb with localhost. Using the hack above fixes the problem for now, but just though I'd mention it.