summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-20 14:52:28 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-20 14:52:28 +0000
commit7029875b20fa7f231b8145442b46a1f31cd89809 (patch)
treef3ea0eb7843bd3bde8032e9ac8ddb2d3b132b49c /test
parent3207cfced7dc17d3971e76bb080aadae02b5eb2d (diff)
merge revision(s) 40232: [Backport #8251]
* test/drb/drbtest.rb (Drb{Core,Ary}#teardown): retry Process.kill if it fails with Errno::EPERM on Windows (workaround). [ruby-dev:47245] [Bug #8251] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@42090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/drb/drbtest.rb26
1 files changed, 20 insertions, 6 deletions
diff --git a/test/drb/drbtest.rb b/test/drb/drbtest.rb
index ac0f5c6be9..6de85cee82 100644
--- a/test/drb/drbtest.rb
+++ b/test/drb/drbtest.rb
@@ -79,9 +79,16 @@ module DRbCore
signal = /mswin|mingw/ =~ RUBY_PLATFORM ? :KILL : :TERM
Thread.list.each {|th|
if th.respond_to?(:pid) && th[:drb_service] == @service_name
- begin
- Process.kill signal, th.pid
- rescue Errno::ESRCH
+ 10.times do
+ begin
+ Process.kill signal, th.pid
+ break
+ rescue Errno::ESRCH
+ break
+ rescue Errno::EPERM # on Windows
+ sleep 0.1
+ retry
+ end
end
th.join
end
@@ -300,9 +307,16 @@ module DRbAry
signal = /mswin|mingw/ =~ RUBY_PLATFORM ? :KILL : :TERM
Thread.list.each {|th|
if th.respond_to?(:pid) && th[:drb_service] == @service_name
- begin
- Process.kill signal, th.pid
- rescue Errno::ESRCH
+ 10.times do
+ begin
+ Process.kill signal, th.pid
+ break
+ rescue Errno::ESRCH
+ break
+ rescue Errno::EPERM # on Windows
+ sleep 0.1
+ retry
+ end
end
th.join
end