stopping a drb server

E

Eric Hodel

Should I be able to stop a drb server that ends with

DRb.thread.join

by hitting Ctrl-C?

http://segment7.net/projects/ruby/drb/introduction.html says that
should work.
It's not working for me.

Maybe there's additional code I need to add to enable that.

Shouldn't be...

What platform? Is you DNS working? DRb performs a DNS lookup to
discover your local hostname.

$ cat simple_server.rb
#!/usr/bin/env ruby -w
# simple_service.rb
# A simple DRb service

# load DRb
require 'drb'

# start up the DRb service
DRb.start_service nil, []

# We need the uri of the service to connect a client
puts DRb.uri

# wait for the DRb service to finish before exiting
DRb.thread.join
$ ruby -v simple_server.rb
ruby 1.8.3 (2005-06-17) [powerpc-darwin8.1.0]
druby://kaa.local:58927
^Csimple_server.rb:15:in `join': Interrupt
from simple_server.rb:15
$
 
M

Mark Volkmann

=20
On 17 Jul 2005, at 13:52, Mark Volkmann wrote:
=20
=20
Shouldn't be...
=20
What platform?

Windows XP
Is you DNS working? DRb performs a DNS lookup to
discover your local hostname.

Yes. I verified that by doing a ping from a command prompt on a known
URL. It pinged the correct IP address.
$ cat simple_server.rb
#!/usr/bin/env ruby -w
# simple_service.rb
# A simple DRb service
=20
# load DRb
require 'drb'
=20
# start up the DRb service
DRb.start_service nil, []
=20
# We need the uri of the service to connect a client
puts DRb.uri
=20
# wait for the DRb service to finish before exiting
DRb.thread.join
$ ruby -v simple_server.rb
ruby 1.8.3 (2005-06-17) [powerpc-darwin8.1.0]
druby://kaa.local:58927
^Csimple_server.rb:15:in `join': Interrupt
from simple_server.rb:15

I ran your code and was not able to break out with a Ctrl-c.
Could this be a Windows-specific problem?

--=20
R. Mark Volkmann
Partner, Object Computing, Inc.
 
H

Hal Fulton

Mark said:
I ran your code and was not able to break out with a Ctrl-c.
Could this be a Windows-specific problem?

I think it is -- I seem to recall being annoyed by this before.

I believe I ended up starting another thread that would do a 'gets'
or something and then kill the other threads after it saw the user
hit the keyboard.

This may also be problematic if e.g. you first hit some other key
besides enter -- I think that cause(s|d) problems.


Hal
 
D

daz

Mark said:
What platform?

Windows XP

[...]
I ran your code and was not able to break out with a Ctrl-c.
Could this be a Windows-specific problem?

R. Mark Volkmann


Try Ctrl-Break.

If that doesn't clear it, Ctrl-c now should.

(Ctrl-Break-c and Ctrl-c-Break alternatives often work.)

Can't point you to an explanation, sorry.


daz
 
E

Eric Hodel

Windows XP


Yes. I verified that by doing a ping from a command prompt on a known
URL. It pinged the correct IP address.

You need to also verify that forward and reverse DNS for your machine
are both set up.
$ cat simple_server.rb
#!/usr/bin/env ruby -w
# simple_service.rb
# A simple DRb service

# load DRb
require 'drb'

# start up the DRb service
DRb.start_service nil, []

# We need the uri of the service to connect a client
puts DRb.uri

# wait for the DRb service to finish before exiting
DRb.thread.join
$ ruby -v simple_server.rb
ruby 1.8.3 (2005-06-17) [powerpc-darwin8.1.0]
druby://kaa.local:58927
^Csimple_server.rb:15:in `join': Interrupt
from simple_server.rb:15

I ran your code and was not able to break out with a Ctrl-c.
Could this be a Windows-specific problem?

Did you get the druby:// line?
 
E

Eric Hodel

I think it is -- I seem to recall being annoyed by this before.

I believe I ended up starting another thread that would do a 'gets'
or something and then kill the other threads after it saw the user
hit the keyboard.

This may also be problematic if e.g. you first hit some other key
besides enter -- I think that cause(s|d) problems.

The example code doesn't use gets, so I think it is somewhere else.
 
M

Mark Volkmann

Did you get the druby:// line?

Yes. It output "druby://volkmann:1081".
"volkmann" is my host name.

Ctrl-Break works for me, but not Ctrl-c.

--=20
R. Mark Volkmann
Partner, Object Computing, Inc.
 
E

Eric Hodel

Yes. It output "druby://volkmann:1081".
"volkmann" is my host name.

Ctrl-Break works for me, but not Ctrl-c.

I'm at a loss then. You'd have to look inside the process and see
what its stuck on.
 
S

Steven Jenkins

Eric said:
I'm at a loss then. You'd have to look inside the process and see what
its stuck on.

I haven't really followed this thead, but this message prompted me to
dig out some 20-year-old Turbo C code for an ancient DOS application. As
I recall, ctrl-c interrupt had to be explicitly enabled.

The code I found called setcbrk(1) to enable trap on ctrl-c. Don't know
if MSVC has (or requires) an equivalent.

Steve
 
Y

Yohanes Santoso

Mark Volkmann said:
Yes. It output "druby://volkmann:1081".
"volkmann" is my host name.

Ctrl-Break works for me, but not Ctrl-c.

You must be using MSVC-compiled ruby, right?

The reason is ruby doesn't enable handling of ctrl event in
win32 (would need to be corrected).

Ctrl-Break works for you because win32 installs a default handler for
ctrl-break which would kill the process.

But there is no default handler for ctrl-c.

http://www.thecodeproject.com/win32/console_event_handling.asp

There is also a MSDN link I'd like to show here that describes that
ctrl-break has a default handler and ctrl-c doesn't, but I couldn't
find it.

YS.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

drb client-side proxies 3
drb pass by reference 2
get host name 1
regexp character classes and + 0
$SAFE >= 2 1
ri - what does it know? 1
to_s and to_str 1
determining the attribute names of an object 4

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top