[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Strange DRb and fork issues

Farrel Lifson

4/29/2007 11:17:00 AM

7 Answers

Ezra Zygmuntowicz

4/29/2007 5:28:00 PM

0


On Apr 29, 2007, at 4:17 AM, Farrel Lifson wrote:

> Hi all,
>
> I'm busy experimenting with DRb and I've hit some strange behaviour
> which I can't get seem to find the cause of. I think it might be
> something to do with DRb and forks but I'm unsure. The process I'm
> trying to achieve is to have a Server process running as a DRb
> service. It can spawn client processes (the create_client method)
> which also run using a DRb service.
>

> <snip>

> Any DRb experts out there who can help?
>
> Thanks
> Farrel
> <base.rb>
> <client.rb>
> <server.rb>


Hey Farrel-

I'll save you a lot of hassle. Go grab the slave gem off rubyforge.
It does exactly what you are trying to do. It allows you to fork
child objects and it sets up a drb connection and a heartneat between
the child and parent so if the parent dies, the children will also die.

http://codeforpeople.com/lib/ruby/slave/slave-1....

Cheers-
-- Ezra Zygmuntowicz
-- Lead Rails Evangelist
-- ez@engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)



Farrel Lifson

4/29/2007 7:37:00 PM

0

On 29/04/07, Ezra Zygmuntowicz <ezmobius@gmail.com> wrote:
> I'll save you a lot of hassle. Go grab the slave gem off rubyforge.
> It does exactly what you are trying to do. It allows you to fork
> child objects and it sets up a drb connection and a heartneat between
> the child and parent so if the parent dies, the children will also die.

Thanks, I'll check it out, although I would really like to work out
what the problem is with my code. I'll look through the source of
Slave and see if I can find some hints.

Farrel

Ara.T.Howard

4/29/2007 10:05:00 PM

0

Farrel Lifson

4/29/2007 11:09:00 PM

0

On 30/04/07, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote:
> i reccomend trying to using slave.rb if you can - of course, as the author,
> i'm biased. it's really tricky connecting parent/child drb processes: the key
> is that you cannot carry the drb objects across the fork, you must setup each
> new drb object in the child and arrange for the parent to find it. this, as
> ezra mentions, exactly what slave does. if you have examle code we can
> suggest how to plug slave into it.

Hi Ara,

In my code I used fork with a block (taken from server.rb):
def create_client(hostname=nil,port=nil)
pid = fork do
@klass.start(hostname,port,self.url)
end
Process.detach(pid)
pid
end
end

Could that be causing the strange issue I'm having? I assumed that was
a safe way of using fork as the child only runs what's in the block.
My main puzzle is why the server loses it's reference to the client
process after it has registered.

I'm trying to learn some of the low level details of DRb, but
unfortunately the documentation out there is not very detailed.

Farrel

Ara.T.Howard

4/30/2007 1:22:00 PM

0

Farrel Lifson

4/30/2007 1:34:00 PM

0

On 30/04/07, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote:
> On Mon, 30 Apr 2007, Farrel Lifson wrote:
>
> >
> > Hi Ara,
> >
> > In my code I used fork with a block (taken from server.rb):
> > def create_client(hostname=nil,port=nil)
> > pid = fork do
> > @klass.start(hostname,port,self.url)
> > end
> > Process.detach(pid)
> > pid
> > end
> > end
>
> that looks reasonable.
>
> > Could that be causing the strange issue I'm having? I assumed that was a
> > safe way of using fork as the child only runs what's in the block. My main
> > puzzle is why the server loses it's reference to the client process after it
> > has registered.
>
> hard to say without seeing the code ;-)

Hi Ara,

Thanks for the help, I hope you don't mind me badgering you but from
my time on the list I know you are one of the resident DRb experts so
I'm grabbing the opportunity to get some expert advice here.

I attached the code I'm using in my first email, comprising three
files (base.rb, client.rb and server.rb) with the unit tests
illustrating my problems in server.rb . If it got stripped out let me
know and I can try and resend it. In the meantime I will check out the
DRb samples directorty and see if that helps.

Thanks again,
Farrel

Ara.T.Howard

4/30/2007 10:10:00 PM

0