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

ruby-changes:59149

From: Kazuhiro <ko1@a...>
Date: Tue, 10 Dec 2019 12:44:19 +0900 (JST)
Subject: [ruby-changes:59149] 7be550d046 (master): Stop Thread.new in `DRb::TimerIdConv::TimerHolder2#on_gc`

https://git.ruby-lang.org/ruby.git/commit/?id=7be550d046

From 7be550d046c726c2a3aa625ceb260d9b2268fb5a Mon Sep 17 00:00:00 2001
From: Kazuhiro NISHIYAMA <zn@m...>
Date: Tue, 10 Dec 2019 12:41:09 +0900
Subject: Stop Thread.new in `DRb::TimerIdConv::TimerHolder2#on_gc`

and add more stop_pool after stop_service

diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb
index 4c0f396..e2aaf70 100644
--- a/lib/drb/drb.rb
+++ b/lib/drb/drb.rb
@@ -1215,6 +1215,7 @@ module DRb https://github.com/ruby/ruby/blob/trunk/lib/drb/drb.rb#L1215
 
     def kill
       @thread.kill
+      @thread.join
     end
 
     def method_missing(msg, *arg, &blk)
diff --git a/test/drb/drbtest.rb b/test/drb/drbtest.rb
index e292cbf..a8363b0 100644
--- a/test/drb/drbtest.rb
+++ b/test/drb/drbtest.rb
@@ -42,6 +42,7 @@ class DRbService https://github.com/ruby/ruby/blob/trunk/test/drb/drbtest.rb#L42
     server.stop_service
     manager.instance_variable_get(:@queue)&.push(nil)
     manager.instance_variable_get(:@thread)&.join
+    DRb::DRbConn.stop_pool
   end
 end
 
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index 9242a22..b792349 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -329,6 +329,7 @@ class TestDRbAnyToS < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/drb/test_drb.rb#L329
     assert_match(/\A#<DRbTests::TestDRbAnyToS::BO:0x[0-9a-f]+>\z/, server.any_to_s(BO.new))
     server.stop_service
     server.thread.join
+    DRb::DRbConn.stop_pool
   end
 end
 
@@ -344,6 +345,7 @@ class TestDRbTCP < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/drb/test_drb.rb#L345
     client.close
     server.stop_service
     server.thread.join
+    DRb::DRbConn.stop_pool
   end
 end
 
diff --git a/test/drb/test_drbobject.rb b/test/drb/test_drbobject.rb
index 16b252d..2b0e206 100644
--- a/test/drb/test_drbobject.rb
+++ b/test/drb/test_drbobject.rb
@@ -12,6 +12,7 @@ module DRbObjectTest https://github.com/ruby/ruby/blob/trunk/test/drb/test_drbobject.rb#L12
 
   def teardown
     DRb.stop_service
+    DRb::DRbConn.stop_pool
   end
 
   def drb_eq(obj)
@@ -43,7 +44,19 @@ class TestDRbObjectTimerIdConv < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/drb/test_drbobject.rb#L44
   include DRbObjectTest
 
   def setup
-    DRb.start_service(nil, nil, {:idconv => DRb::TimerIdConv.new})
+    @idconv = DRb::TimerIdConv.new
+    DRb.start_service(nil, nil, {:idconv => @idconv})
+  end
+
+  def teardown
+    super
+    # stop DRb::TimerIdConv::TimerHolder2#on_gc
+    @idconv.instance_eval do
+      @holder.instance_eval do
+        @expires = nil
+      end
+    end
+    GC.start
   end
 end
 
-- 
cgit v0.10.2


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

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