[#15359] Timeout::Error — Jeremy Thurgood <jerith@...>

Good day,

41 messages 2008/02/05
[#15366] Re: Timeout::Error — Eric Hodel <drbrain@...7.net> 2008/02/06

On Feb 5, 2008, at 06:20 AM, Jeremy Thurgood wrote:

[#15370] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Eric Hodel wrote:

[#15373] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15374] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Nobuyoshi Nakada wrote:

[#15412] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15413] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/07

Nobuyoshi Nakada wrote:

[#15414] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15360] reopen: can't change access mode from "w+" to "w"? — Sam Ruby <rubys@...>

I ran 'rake test' on test/spec [1], using

16 messages 2008/02/05
[#15369] Re: reopen: can't change access mode from "w+" to "w"? — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15389] STDIN encoding differs from default source file encoding — Dave Thomas <dave@...>

This seems strange:

21 messages 2008/02/06
[#15392] Re: STDIN encoding differs from default source file encoding — Yukihiro Matsumoto <matz@...> 2008/02/06

Hi,

[#15481] very bad character performance on ruby1.9 — "Eric Mahurin" <eric.mahurin@...>

I'd like to bring up the issue of how characters are represented in

16 messages 2008/02/10

[#15528] Test::Unit maintainer — Kouhei Sutou <kou@...>

Hi Nathaniel, Ryan,

22 messages 2008/02/13

[#15551] Proc#curry — ts <decoux@...>

21 messages 2008/02/14
[#15557] Re: [1.9] Proc#curry — David Flanagan <david@...> 2008/02/15

ts wrote:

[#15558] Re: [1.9] Proc#curry — Yukihiro Matsumoto <matz@...> 2008/02/15

Hi,

[#15560] Re: Proc#curry — Trans <transfire@...> 2008/02/15

[#15585] Ruby M17N meeting summary — Martin Duerst <duerst@...>

This is a rough translation of the Japanese meeting summary

19 messages 2008/02/18

[#15596] possible bug in regexp lexing — Ryan Davis <ryand-ruby@...>

current:

17 messages 2008/02/19

[#15678] Re: [ANN] MacRuby — "Rick DeNatale" <rick.denatale@...>

On 2/27/08, Laurent Sansonetti <laurent.sansonetti@gmail.com> wrote:

18 messages 2008/02/28
[#15679] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 6:33 AM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#15680] Re: [ANN] MacRuby — Yukihiro Matsumoto <matz@...> 2008/02/28

Hi,

[#15683] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 1:51 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

Re: Non-local exits via throw/rescue: Re: Timeout::Error

From: MenTaLguY <mental@...>
Date: 2008-02-08 20:11:49 UTC
List: ruby-core #15437
On Fri, 8 Feb 2008 13:07:47 +0900, Kurt Stephens <ks@kurtstephens.com> wrote:
>   That's why there should be a different standard superclass for
> intentional non-local exits for Timeout::Error, Kernel#exit, etc. that
> is not commonly trapped for logging, etc.  I'm not really sure if a
> throwable superclass for that purpose exists in Ruby 1.8 or 1.9 by
> convention, design or at all.

I do agree on this point.  I just think we need something more along
the lines of Java's Thread.interrupt (which can inject asynchronous
exceptions only at well-defined points) instead of Thread#raise.
 
>> Given that, as long as none of the mutable objects modified by your
>> aborted computation persist past the timeout, you are okay, but that
>> is more difficult to achieve than you might naively expect.
> 
>   Agreed, side-effects are the tricky part of any recovery from any
> non-local exit: don't make side-effects that are not recoverable if
> recovery is needed.  It's not that hard.  :)

You'd be surprised.  Since you're evidently doing IO, have you
audited those libraries to make sure you aren't inadvertantly mangling
or leaking pooled resources?

As far as leaks go, it's important to realize that begin/ensure isn't
sufficient to protect against Thread#raise-style asynchronous
exceptions (there are always races surrounding the beginning of the
begin block, and depending on the Ruby implementation, the execution
of the ensure block), so it is critical that none of the code you try
to interrupt do anything that cannot be cleaned by the garbage collector
on its own.

(Most of those issues would go away if we had something like Java's
Thread.interrupt.)

-mental


In This Thread