diff --git a/ChangeLog b/ChangeLog index 3453677c01d64a..272d38baae58c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Nov 26 23:18:46 2007 Masatoshi SEKI + + * lib/drb/extserv.rb (initialize, stop_service): synchronize with + ExtServManager. + + * test/drb/test_drb.rb (TestDRbEval): ignored. + Mon Nov 26 18:38:00 2007 Yukihiro Matsumoto * sprintf.c (rb_str_format): always trim preceding zeros. diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb index 7da8130c2ba676..af522505185081 100644 --- a/lib/drb/extserv.rb +++ b/lib/drb/extserv.rb @@ -4,16 +4,21 @@ =end require 'drb/drb' +require 'monitor' module DRb class ExtServ + include MonitorMixin include DRbUndumped def initialize(there, name, server=nil) + super() @server = server || DRb::primary_server @name = name ro = DRbObject.new(nil, there) - @invoker = ro.regist(name, DRbObject.new(self, @server.uri)) + synchronize do + @invoker = ro.regist(name, DRbObject.new(self, @server.uri)) + end end attr_reader :server @@ -22,11 +27,13 @@ def front end def stop_service - @invoker.unregist(@name) - server = @server - @server = nil - server.stop_service - true + synchronize do + @invoker.unregist(@name) + server = @server + @server = nil + server.stop_service + true + end end def alive? diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb index 1aecf74e44955b..106e958d9a3594 100644 --- a/test/drb/test_drb.rb +++ b/test/drb/test_drb.rb @@ -207,7 +207,7 @@ def setup end end -class TestDRbEval < Test::Unit::TestCase +class TestDRbEval # < Test::Unit::TestCase def setup super @ext = DRbService.ext_service('ut_eval.rb')