[前][次][番号順一覧][スレッド一覧]

ruby-changes:26203

From: kosaki <ko1@a...>
Date: Fri, 7 Dec 2012 19:38:38 +0900 (JST)
Subject: [ruby-changes:26203] kosaki:r38260 (trunk): Revert r38216 and r38221. Release manager mark this feature as "next minor".

kosaki	2012-12-07 19:36:59 +0900 (Fri, 07 Dec 2012)

  New Revision: 38260

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38260

  Log:
    Revert r38216 and r38221. Release manager mark this feature as "next minor".

  Modified files:
    trunk/ChangeLog
    trunk/NEWS
    trunk/lib/timeout.rb
    trunk/test/test_timeout.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 38259)
+++ ChangeLog	(revision 38260)
@@ -208,23 +208,6 @@
 	  called, as mentioned in r14173.  patched by charliesome (Charlie
 	  Somerville).  [ruby-core:50489] [Bug #7499]
 
-Thu Dec  6 00:51:21 2012  Masaya Tarui  <tarui@r...>
-
-	* lib/timeout.rb (Timeout#timeout): specify a exception
-	  more strictly at async_interrupt_timing.
-
-Wed Dec  5 04:50:17 2012  KOSAKI Motohiro  <kosaki.motohiro@g...>
-
-	* lib/timeout.rb (Timeout#timeout): set
-	  async_interrupt_timing(:on_blocking) by default.
-	  [Bug #7503] [ruby-core:50524]
-
-	* test/test_timeout.rb (test_timeout_blocking): test for the above.
-	* test/test_timeout.rb (test_timeout_immediate): ditto
-	* test/test_timeout.rb (test_timeout_immediate2): ditto.
-
-	* NEWS: news for the above.
-
 Wed Dec  5 23:50:23 2012  Narihiro Nakamura  <authornari@g...>
 
 	* gc.c (getrusage_time): uses clock_gettime() with
Index: lib/timeout.rb
===================================================================
--- lib/timeout.rb	(revision 38259)
+++ lib/timeout.rb	(revision 38260)
@@ -47,28 +47,26 @@
   # Note that this is both a method of module Timeout, so you can <tt>include
   # Timeout</tt> into your classes so they have a #timeout method, as well as
   # a module method, so you can call it directly as Timeout.timeout().
-  def timeout(sec, klass = nil, immediate: false)   #:yield: +sec+
+  def timeout(sec, klass = nil)   #:yield: +sec+
     return yield(sec) if sec == nil or sec.zero?
     exception = klass || Class.new(ExitException)
     begin
-      Thread.async_interrupt_timing(exception => immediate ? :immediate : :on_blocking) do
-        begin
-          x = Thread.current
-          y = Thread.start {
-            begin
-              sleep sec
-            rescue => e
-              x.raise e
-            else
-              x.raise exception, "execution expired"
-            end
-          }
-          return yield(sec)
-        ensure
-          if y
-            y.kill
-            y.join # make sure y is dead.
+      begin
+        x = Thread.current
+        y = Thread.start {
+          begin
+            sleep sec
+          rescue => e
+            x.raise e
+          else
+            x.raise exception, "execution expired"
           end
+        }
+        return yield(sec)
+      ensure
+        if y
+          y.kill
+          y.join # make sure y is dead.
         end
       end
     rescue exception => e
@@ -80,7 +78,7 @@
         level += 1
       end
       raise if klass            # if exception class is specified, it
-      # would be expected outside.
+                                # would be expected outside.
       raise Error, e.message, e.backtrace
     end
   end
Index: NEWS
===================================================================
--- NEWS	(revision 38259)
+++ NEWS	(revision 38260)
@@ -332,13 +332,6 @@
     are introduced for easy detection of available constants on a
     running system.
 
-* timeout
-  * Timeout.timeout supports immediate optional keyword parameter.
-  * incompatible changes:
-    * Timeout.timeout now use async_interrupt_timing(:on_blocking) by default.
-      And then, timeout is only happen on blocking point (e.g. sleep, read,
-       write, Mutex#lock and so on).
-
 * tmpdir
   * incompatible changes:
     * Dir.mktmpdir uses FileUtils.remove_entry instead of
Index: test/test_timeout.rb
===================================================================
--- test/test_timeout.rb	(revision 38259)
+++ test/test_timeout.rb	(revision 38260)
@@ -18,7 +18,7 @@
     }
     assert_nothing_raised("[ruby-dev:38319]") do
       Timeout.timeout(1) {
-        sleep 0.01 while @flag
+        nil while @flag
       }
     end
     assert !@flag, "[ruby-dev:38319]"
@@ -29,66 +29,4 @@
     def (n = Object.new).zero?; false; end
     assert_raise(TypeError, bug3168) {Timeout.timeout(n) { sleep 0.1 }}
   end
-
-  def test_timeout_immediate
-    begin
-      t = Thread.new {
-        Timeout.timeout(0.1, immediate: true) {
-          # loop forever, but can be interrupted
-          loop {}
-        }
-      }
-      sleep 0.5
-      t.raise RuntimeError
-      assert_raise(Timeout::Error) {
-        t.join
-      }
-    ensure
-      t.kill if t.alive?
-      begin
-        t.join
-      rescue Exception
-      end
-    end
-  end
-
-  def test_timeout_immediate2
-    begin
-      t = Thread.new {
-        Timeout.timeout(0.1) {
-          # loop forever, must not interrupted
-          loop {}
-        }
-      }
-      sleep 0.5
-      t.raise RuntimeError
-      assert_raise(Timeout::Error) {
-        # deferred interrupt should raise
-        t.join
-      }
-    ensure
-      t.kill if t.alive?
-      begin
-        t.join
-      rescue Exception
-      end
-    end
-  end
-
-  def test_timeout_blocking
-    t0 = Time.now
-    begin
-      Timeout.timeout(0.1) {
-        while true do
-          t1 = Time.now
-          break if t1 - t0 > 1
-        end
-        sleep 2
-      }
-    rescue Timeout::Error
-    end
-    t1 = Time.now
-    assert (t1 - t0) >= 1
-    assert (t1 - t0) < 2
-  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]