From: Ken Hilton Date: 2004-05-08T05:18:55+09:00 Subject: Re: DRb Connection Closed Error?!?!?!? Here's the code again, for your convenience. And, when I step through this, the error in the server occurs when the client process terminates, not when it stops its local DRb service session. THANKS, Ken. -------------------- drbsvr.rb # drb server require 'drb' class MySvr def svc(stop) puts "MySvr::svc called." return "Service completed." end end $stdout.sync=true; while true begin puts "Starting MySvr..." DRb.start_service("druby://localhost:9000", MySvr.new()); DRb.thread.join; puts "MySvr has terminated" rescue DRb::DRbConnError puts "Rescued DRbConnectionClosed: #{$!}" end end ---------------drbclnt.rb # drb client require 'drb' begin DRb.start_service(nil,nil); svr = DRbObject.new(nil, "druby://localhost:9000") 10.times do puts svr.svc(false); end DRb.stop_service; rescue DRb::DRbConnError puts "Rescued #{$!}" end ------------Client output Debug.rb Emacs support available. H:/qbbpo/src/vendornet/etc/ (rdb:1) c Service completed. Service completed. Service completed. Service completed. Service completed. Service completed. Service completed. Service completed. Service completed. Service completed. Press any key to continue ------------ Server output & DRb error (rdb:1) c Starting MySvr... MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. MySvr::svc called. e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:104: `connection closed' (DRb:: RbConnError) from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:596:in `start' from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:596:in `run' from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:549:in `initialize from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:737:in `new' from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:737:in `start_serv ce' from H:/qbbpo/src/vendornet/etc/drbsvr.rb:17 e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:104: raise(DRbConnError, ' onnection closed') if sz.nil? (rdb:3) "Ken Hilton" wrote in message news:iStmc.42859$I%1.2775243@attbi_s51... > Greetings, > > Can anyone explain to me why this very simple little DRb client server pair > generates a DRb::DRbConnError when the client terminates? I've checked out > the books and the samples and I can't see what I'm missing. I'm running > Ruby 1.8.1 on Win2000 and WinXP. The problem reproduces w/the pair running > on the same machine or (with the host id modified) when each is running on > separate machines. > > Instructions: Run drbsvr.rb first, then run the drbclnt.rb. The output I > get from ruby follows below. > > PS. I am unable to rescue the error that was raised by DRb, which BTW > puzzles me further. > > Thanks for any help you can lend. > > Ken. > > ----------------------------- > # drb server > > require 'drb' > > class MySvr > def svc > puts "MySvr::svc called." > return "Service completed." > end > end > > $stdout.sync=true; > > while true > begin > puts "Starting MySvr..." > DRb.start_service("druby://localhost:9000", MySvr.new()); > DRb.thread.join; > DRb.stop_service; > rescue DRb::DRbConnError > puts "Rescued DRbConnectionClosed: #{$!}" > end > end > > ------------------------ > # drb client > require 'drb' > > DRb.start_service(nil,nil); > svr = DRbObject.new(nil, "druby://localhost:9000") > 10.times do > puts svr.svc(); > end > DRb.stop_service; > --------------------------- > Output:(rdb:1) c > Starting MySvr... > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > MySvr::svc called. > e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:104: `connection closed' > (DRb::D > RbConnError) > from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:596:in `start' > from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:596:in `run' > from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:549:in > `initialize' > > from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:737:in `new' > from e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:737:in > `start_servi > ce' > from H:/qbbpo/src/vendornet/etc/drbsvr.rb:17 > e:/tools/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:104: > raise(DRbConnError, 'c > onnection closed') if sz.nil? > (rdb:3) > > >