From fe5169f4c5c794e7ee387d6ec73f7e73e737eef3 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 19 Dec 2015 08:16:54 +0000 Subject: 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 --- lib/webrick/utils.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') 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 -- cgit v1.2.3