summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-08-10 17:08:37 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-08-10 17:08:37 +0000
commit40270906824a981652719c5e614c2cf4d1c234b0 (patch)
tree0a3c3021b0a3106d808455e1b15b918206abb2cc
parent3b90cf70d17b5441a83b7ccb1aa0ff2e8b2f5bbc (diff)
merge revision(s) 51213: [Backport #11344]
* lib/timeout.rb (ExitException): removed internal exception class and use Timeout::Error instead, as using throw/catch to isolate each timeouts now. [ruby-dev:49179] [Bug #11344] * lib/timeout.rb (ExitException): leave Timeout::ExitException as an alias of Timeout::Error for backward compatibility in stable branch. [ruby-dev:49179] [Bug #11344] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog12
-rw-r--r--lib/timeout.rb5
-rw-r--r--test/test_timeout.rb23
-rw-r--r--version.h2
4 files changed, 35 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 680c6b7e19..d9ce96f10e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Tue Aug 11 01:51:53 2015 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * lib/timeout.rb (ExitException): leave Timeout::ExitException as an
+ alias of Timeout::Error for backward compatibility in stable branch.
+ [ruby-dev:49179] [Bug #11344]
+
+Tue Aug 11 01:51:53 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (ExitException): removed internal exception class
+ and use Timeout::Error instead, as using throw/catch to isolate
+ each timeouts now. [ruby-dev:49179] [Bug #11344]
+
Tue Aug 11 01:37:28 2015 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* test/net/http/test_httpresponse.rb
diff --git a/lib/timeout.rb b/lib/timeout.rb
index fec7b9428c..123f600ccb 100644
--- a/lib/timeout.rb
+++ b/lib/timeout.rb
@@ -24,8 +24,6 @@
module Timeout
# Raised by Timeout#timeout when the block times out.
class Error < RuntimeError
- end
- class ExitException < ::Exception # :nodoc:
attr_reader :thread
def self.catch(*args)
@@ -46,6 +44,7 @@ module Timeout
self
end
end
+ ExitException = Error
# :stopdoc:
THIS_FILE = /\A#{Regexp.quote(__FILE__)}:/o
@@ -101,7 +100,7 @@ module Timeout
bt = e.backtrace
end
else
- bt = ExitException.catch(message, &bl)
+ bt = Error.catch(message, &bl)
end
rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o
bt.reject! {|m| rej =~ m}
diff --git a/test/test_timeout.rb b/test/test_timeout.rb
index e71a09f22c..e4eba7f902 100644
--- a/test/test_timeout.rb
+++ b/test/test_timeout.rb
@@ -63,9 +63,9 @@ class TestTimeout < Test::Unit::TestCase
end
def test_exit_exception
- assert_raise_with_message(Timeout::ExitException, "boon") do
- Timeout.timeout(10, Timeout::ExitException) do
- raise Timeout::ExitException, "boon"
+ assert_raise_with_message(Timeout::Error, "boon") do
+ Timeout.timeout(10, Timeout::Error) do
+ raise Timeout::Error, "boon"
end
end
end
@@ -80,4 +80,21 @@ class TestTimeout < Test::Unit::TestCase
Timeout.timeout(0.01) {e.next}
end
end
+
+ def test_handle_interrupt
+ bug11344 = '[ruby-dev:49179] [Bug #11344]'
+ ok = false
+ assert_raise(Timeout::Error) {
+ Thread.handle_interrupt(Timeout::Error => :never) {
+ Timeout.timeout(0.01) {
+ sleep 0.2
+ ok = true
+ Thread.handle_interrupt(Timeout::Error => :on_blocking) {
+ sleep 0.2
+ }
+ }
+ }
+ }
+ assert(ok, bug11344)
+ end
end
diff --git a/version.h b/version.h
index ee666b3057..4f82676308 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.3"
#define RUBY_RELEASE_DATE "2015-08-11"
-#define RUBY_PATCHLEVEL 155
+#define RUBY_PATCHLEVEL 156
#define RUBY_RELEASE_YEAR 2015
#define RUBY_RELEASE_MONTH 8