Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > DRb / dRuby - freezes on DRb::DRbUndumped - any ideas?

Reply
Thread Tools

DRb / dRuby - freezes on DRb::DRbUndumped - any ideas?

 
 
Miles Keaton
Guest
Posts: n/a
 
      03-28-2005
Using the "Remote objects under dRuby" example here:
http://www.ruby-doc.org/stdlib/libdo...asses/DRb.html
Following it, exactly.

But it freezes when it tries to call this line:
logger.log("Hello, world!")
Everything works until that point.

This same freeze happens with
http://pragmaticprogrammer.com/title...de/smp670.html

What they all have in common is DRb:RbUndumped - so I'm guessing
that's the problem.

I'm running Ruby 1.8.2 on different/remote computers to do this test
(client names server by IP address.)

It works when I run both on the same computer, but as soon as I try to
put client and server on different computers, it seems unable to use
objects passed by reference.

NOTE where it froze, above. It's able to pass the object by
reference. It receives it back on the client. But when the client
tries to use it, that's when it freezes.

I've tried this on various FreeBSD and Mac OS X computers, at home and
work, without firewalls. All other DRb code works fine except when
using DRbUndumped.

Any suggestions?


 
Reply With Quote
 
 
 
 
Miles Keaton
Guest
Posts: n/a
 
      03-28-2005
New information on the post, below.

I got a hold of a Linux(Debian) box, and it works:

FreeBSD, OpenBSD, and Mac OS X all freeze if they are the remote server.
(Mac OS X as remote server freezes even earlier than FreeBSD does.)

But all O.S. work as the client if Linux is the remote server.

I don't know anything about threads, and I install Ruby via the
default installation in FreeBSD ports, knowing that lots of Ruby
experts use FreeBSD, and have probably set up the ports-version the
best. But could this be a reason to get Ruby to use Linux threads?
http://www.freebsd.org/cgi/url.cgi?p...eads/pkg-descr

Any info appreciated. I really want to get DRb / dRuby working across
remote boxes besides Linux.




On Mon, 28 Mar 2005 00:56:10 -0800, Miles Keaton <(E-Mail Removed)> wrote:
> Using the "Remote objects under dRuby" example here:
> http://www.ruby-doc.org/stdlib/libdo...asses/DRb.html
> Following it, exactly.
>
> But it freezes when it tries to call this line:
> logger.log("Hello, world!")
> Everything works until that point.
>
> This same freeze happens with
> http://pragmaticprogrammer.com/title...de/smp670.html
>
> What they all have in common is DRb:RbUndumped - so I'm guessing
> that's the problem.
>
> I'm running Ruby 1.8.2 on different/remote computers to do this test
> (client names server by IP address.)
>
> It works when I run both on the same computer, but as soon as I try to
> put client and server on different computers, it seems unable to use
> objects passed by reference.
>
> NOTE where it froze, above. It's able to pass the object by
> reference. It receives it back on the client. But when the client
> tries to use it, that's when it freezes.
>
> I've tried this on various FreeBSD and Mac OS X computers, at home and
> work, without firewalls. All other DRb code works fine except when
> using DRbUndumped.
>
> Any suggestions?



 
Reply With Quote
 
 
 
 
Miles Keaton
Guest
Posts: n/a
 
      03-30-2005
On Mon, 28 Mar 2005 00:56:10 -0800, Miles Keaton <(E-Mail Removed)> wrote:
> Using the "Remote objects under dRuby" example here:
> http://www.ruby-doc.org/stdlib/libdo...asses/DRb.html
> Following it, exactly.
>
> But it freezes when it tries to call this line:
> logger.log("Hello, world!")
> Everything works until that point.
>
> This same freeze happens with
> http://pragmaticprogrammer.com/title...de/smp670.html
>
> What they all have in common is DRb:RbUndumped - so I'm guessing
> that's the problem.
>
> I'm running Ruby 1.8.2 on different/remote computers to do this test
> (client names server by IP address.)
>
> It works when I run both on the same computer, but as soon as I try to
> put client and server on different computers, it seems unable to use
> objects passed by reference.
>
> NOTE where it froze, above. It's able to pass the object by
> reference. It receives it back on the client. But when the client
> tries to use it, that's when it freezes.
>
> I've tried this on various FreeBSD and Mac OS X computers, at home and
> work, without firewalls. All other DRb code works fine except when
> using DRbUndumped.



I started putting little "pp" statements inside drb.rb to find out
what was happening.

Is there any reason that URI should ever be nil?

See here:

~~~ DRbConn.open called
REMOTE_URI: "druby://10.0.1.1:2001"
@mutex: #<Mutex:0x6d52a0 @locked=false, @waiting=[]>
CONN: nil

### DRbProtocol.open has been called
URI: "druby://10.0.1.1:2001"
FIRST?: true
PROTOCOLRb:RbTCPSocket
=== DRbTCPSocket.open has been called
URI: "druby://10.0.1.1:2001"
Parsing uri...
HOST: "10.0.1.1"
PORT: 2001
OPTION: nil
Doing TCPSocket.open(host, port)
SOC: #<TCPSocket:0x682078>
~~~ DRbConn.open called
REMOTE_URI: nil
@mutex: #<Mutex:0x6d52a0 @locked=false, @waiting=[]>
CONN: nil

### DRbProtocol.open has been called
URI: nil
FIRST?: true
PROTOCOLRb:RbTCPSocket
=== DRbTCPSocket.open has been called
URI: nil
Parsing uri...

### DRbProtocol.open has been called
URI: nil
FIRST?: false
PROTOCOLRb:RbTCPSocket
=== DRbTCPSocket.open has been called
URI: nil
Parsing uri...
~~~ DRbConn.open called
REMOTE_URI: nil
@mutex: #<Mutex:0x6d52a0 @locked=false, @waiting=[]>
CONN: nil

### DRbProtocol.open has been called
URI: nil
FIRST?: true
PROTOCOLRb:RbTCPSocket
=== DRbTCPSocket.open has been called
URI: nil
Parsing uri...

### DRbProtocol.open has been called
URI: nil
FIRST?: false
PROTOCOLRb:RbTCPSocket
=== DRbTCPSocket.open has been called
URI: nil
Parsing uri...
/usr/local/lib/ruby/1.8/drb/drb.rb:739:in `open': can't parse uri:nil
(DRb:RbConnError)


 
Reply With Quote
 
Miles Keaton
Guest
Posts: n/a
 
      03-30-2005
The answer to this was just given by Brian Candler in another thread,
but I'm putting it here, too, for Google's sake, for future people
having this problem:


======= THE SOLUTION : (WORKS!) ==========
The client side machine will read its own system
hostname (as shown by 'hostname' on many Unix systems), and pass that across
to the server. At the time it wishes to connect back, the server will then
try to resolve that name back to an IP address.

So it's important that 'hostname' contains a real hostname and your DNS is
working, or at least at the server side you have an entry in /etc/hosts for
the client host.
========= (THANKS BRIAN!) ===============


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
DRB: can't run subshell in drb server? Ittay Dror Ruby 1 10-21-2008 11:28 AM
DRb connection error with more than 250+ DRb services J. Wook Ruby 16 05-16-2007 11:32 AM
DRb freezes YARV? Meinrad Recheis Ruby 0 03-07-2007 09:48 PM
501 PIX "deny any any" "allow any any" Any Anybody? Networking Student Cisco 4 11-16-2006 10:40 PM
More DRb; SSL & DRB & errors Kirk Haines Ruby 0 07-01-2005 06:29 PM



Advertisments