aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-12-19 08:16:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-12-19 08:16:54 +0000
commitfe5169f4c5c794e7ee387d6ec73f7e73e737eef3 (patch)
tree2e0e3fc7ce29cdf67b460c7c4bbfe70fc5ece0e3
parent413606e3e0ab00f834a414227f89fde642f7a8b2 (diff)
downloadruby-fe5169f4c5c794e7ee387d6ec73f7e73e737eef3.tar.gz
webrick/utils.rb: get rid of thread leak checker
* lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler#initialize): use WEBrick::Utils::TimeoutHandler::Thread, which is ignored by LeakChecker#find_threads, instead of ::Thread to get rid of thread leak checker. since this TimeoutHandler is resident during tests because of Singleton, it waits for the next timeout if it has any schedules. in the case of nested timeouts, inner timeout does not cancel outer timeouts and then those schedules still remain. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog11
-rw-r--r--lib/webrick/utils.rb5
2 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 97a0ff5142..3a16b60546 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Sat Dec 19 17:17:04 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler#initialize):
+ use WEBrick::Utils::TimeoutHandler::Thread, which is ignored by
+ LeakChecker#find_threads, instead of ::Thread to get rid of
+ thread leak checker. since this TimeoutHandler is resident
+ during tests because of Singleton, it waits for the next timeout
+ if it has any schedules. in the case of nested timeouts, inner
+ timeout does not cancel outer timeouts and then those schedules
+ still remain.
+
Sat Dec 19 14:28:01 2015 Jake Worth <jakeworth82@gmail.com>
* ext/zlib/zlib.c (Init_zlib): [DOC] Fix double-word typo and
diff --git a/lib/webrick/utils.rb b/lib/webrick/utils.rb
index ed0f3da615..9c978a2b7b 100644
--- a/lib/webrick/utils.rb
+++ b/lib/webrick/utils.rb
@@ -177,8 +177,9 @@ module WEBrick
@queue.pop
elsif (wakeup -= now) > 0
begin
- Timeout.timeout(wakeup) { @queue.pop }
- rescue Timeout::Error
+ (th = Thread.start {@queue.pop}).join(wakeup)
+ ensure
+ th&.kill&.join
end
end
@queue.clear