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/