[前][次][番号順一覧][スレッド一覧]

ruby-changes:23663

From: naruse <ko1@a...>
Date: Sat, 19 May 2012 14:41:37 +0900 (JST)
Subject: [ruby-changes:23663] naruse:r35714 (ruby_1_9_3): merge revision(s) 35424:

naruse	2012-05-19 14:41:23 +0900 (Sat, 19 May 2012)

  New Revision: 35714

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35714

  Log:
    merge revision(s) 35424:
    
    * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
      invoke service subprocess.  mark detach threads for clean up.
    
    * test/drb/drbtest.rb: clean up the service subprocess in teardown.
    
    * test/drb/test_drb.rb: set @service_name for teardown.
    
    * test/drb/test_drbunix.rb: ditto.
    
    * test/drb/test_drbssl.rb: ditto.

  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/lib/drb/extservm.rb
    branches/ruby_1_9_3/test/drb/drbtest.rb
    branches/ruby_1_9_3/test/drb/test_drb.rb
    branches/ruby_1_9_3/test/drb/test_drbssl.rb
    branches/ruby_1_9_3/test/drb/test_drbunix.rb
    branches/ruby_1_9_3/version.h

Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 35713)
+++ ruby_1_9_3/ChangeLog	(revision 35714)
@@ -1,3 +1,16 @@
+Sat May 19 14:41:09 2012  Tanaka Akira  <akr@f...>
+
+	* lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
+	  invoke service subprocess.  mark detach threads for clean up.
+
+	* test/drb/drbtest.rb: clean up the service subprocess in teardown.
+
+	* test/drb/test_drb.rb: set @service_name for teardown.
+
+	* test/drb/test_drbunix.rb: ditto.
+
+	* test/drb/test_drbssl.rb: ditto.
+
 Sat May 19 14:40:49 2012  Tanaka Akira  <akr@f...>
 
 	* lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.
Index: ruby_1_9_3/lib/drb/extservm.rb
===================================================================
--- ruby_1_9_3/lib/drb/extservm.rb	(revision 35713)
+++ ruby_1_9_3/lib/drb/extservm.rb	(revision 35714)
@@ -79,7 +79,15 @@
         @servers[name] = false
       end
       uri = @uri || DRb.uri
-      Process.detach spawn("#{command} #{uri} #{name}")
+      if command.respond_to? :to_ary
+        command = command.to_ary + [uri, name]
+        pid = spawn(*command)
+      else
+        pid = spawn("#{command} #{uri} #{name}")
+      end
+      th = Process.detach(pid)
+      th[:drb_service] = name
+      th
     end
   end
 end
Index: ruby_1_9_3/version.h
===================================================================
--- ruby_1_9_3/version.h	(revision 35713)
+++ ruby_1_9_3/version.h	(revision 35714)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 219
+#define RUBY_PATCHLEVEL 220
 
 #define RUBY_RELEASE_DATE "2012-05-19"
 #define RUBY_RELEASE_YEAR 2012
Index: ruby_1_9_3/test/drb/test_drbssl.rb
===================================================================
--- ruby_1_9_3/test/drb/test_drbssl.rb	(revision 35713)
+++ ruby_1_9_3/test/drb/test_drbssl.rb	(revision 35714)
@@ -36,7 +36,8 @@
 class TestDRbSSLCore < Test::Unit::TestCase
   include DRbCore
   def setup
-    @ext = DRbSSLService.ext_service('ut_drb_drbssl.rb')
+    @service_name = 'ut_drb_drbssl.rb'
+    @ext = DRbSSLService.ext_service(@service_name)
     @there = @ext.front
   end
 
@@ -53,7 +54,8 @@
 class TestDRbSSLAry < Test::Unit::TestCase
   include DRbAry
   def setup
-    @ext = DRbSSLService.ext_service('ut_array_drbssl.rb')
+    @service_name = 'ut_array_drbssl.rb'
+    @ext = DRbSSLService.ext_service(@service_name)
     @there = @ext.front
   end
 end
Index: ruby_1_9_3/test/drb/test_drb.rb
===================================================================
--- ruby_1_9_3/test/drb/test_drb.rb	(revision 35713)
+++ ruby_1_9_3/test/drb/test_drb.rb	(revision 35714)
@@ -202,7 +202,8 @@
 
 class TestDRbSafe1 < TestDRbAry
   def setup
-    @ext = DRbService.ext_service('ut_safe1.rb')
+    @service_name = 'ut_safe1.rb'
+    @ext = DRbService.ext_service(@service_name)
     @there = @ext.front
   end
 end
Index: ruby_1_9_3/test/drb/drbtest.rb
===================================================================
--- ruby_1_9_3/test/drb/drbtest.rb	(revision 35713)
+++ ruby_1_9_3/test/drb/drbtest.rb	(revision 35714)
@@ -11,7 +11,7 @@
   @@ruby += " -d" if $DEBUG
   def self.add_service_command(nm)
     dir = File.dirname(File.expand_path(__FILE__))
-    DRb::ExtServManager.command[nm] = "#{@@ruby} \"#{dir}/#{nm}\""
+    DRb::ExtServManager.command[nm] = [@@ruby, "#{dir}/#{nm}"]
   end
 
   %w(ut_drb.rb ut_array.rb ut_port.rb ut_large.rb ut_safe1.rb ut_eval.rb ut_eq.rb).each do |nm|
@@ -65,12 +65,20 @@
 
 module DRbCore
   def setup
-    @ext = DRbService.ext_service('ut_drb.rb')
+    @service_name = 'ut_drb.rb'
+    @ext = DRbService.ext_service(@service_name)
     @there = @ext.front
   end
 
   def teardown
-    @ext.stop_service if @ext
+    @ext.stop_service if defined?(@ext) && @ext
+    DRbService.manager.unregist(@service_name)
+    Thread.list.each {|th|
+      if th.respond_to?(:pid) && th[:drb_service] == @service_name
+        Process.kill :TERM, th.pid
+        th.join
+      end
+    }
   end
 
   def test_00_DRbObject
@@ -271,12 +279,20 @@
 
 module DRbAry
   def setup
-    @ext = DRbService.ext_service('ut_array.rb')
+    @service_name = 'ut_array.rb'
+    @ext = DRbService.ext_service(@service_name)
     @there = @ext.front
   end
 
   def teardown
-    @ext.stop_service if @ext
+    @ext.stop_service if defined?(@ext) && @ext
+    DRbService.manager.unregist(@service_name)
+    Thread.list.each {|th|
+      if th.respond_to?(:pid) && th[:drb_service] == @service_name
+        Process.kill :TERM, th.pid
+        th.join
+      end
+    }
   end
 
   def test_01
Index: ruby_1_9_3/test/drb/test_drbunix.rb
===================================================================
--- ruby_1_9_3/test/drb/test_drbunix.rb	(revision 35713)
+++ ruby_1_9_3/test/drb/test_drbunix.rb	(revision 35714)
@@ -20,7 +20,8 @@
 class TestDRbUNIXCore < Test::Unit::TestCase
   include DRbCore
   def setup
-    @ext = DRbUNIXService.ext_service('ut_drb_drbunix.rb')
+    @service_name = 'ut_drb_drbunix.rb'
+    @ext = DRbUNIXService.ext_service(@service_name)
     @there = @ext.front
   end
 
@@ -37,7 +38,8 @@
 class TestDRbUNIXAry < Test::Unit::TestCase
   include DRbAry
   def setup
-    @ext = DRbUNIXService.ext_service('ut_array_drbunix.rb')
+    @service_name = 'ut_array_drbunix.rb'
+    @ext = DRbUNIXService.ext_service(@service_name)
     @there = @ext.front
   end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]