Issue #17470 has been updated by Eregon (Benoit Daloze).


ioquatix (Samuel Williams) wrote in #note-2:
> Actually, that's not necessarily true, even for the current implementation, see `getaddrinfo` for example.

You're completely evading my question :p
Could you answer it please?

That's one of the very rare cases, maybe even the only case in core methods that cannot be interrupted by Thread#raise.

Is the idea to simply give up on interrupting anything that's not handled by the scheduler if there is a `Fiber.scheduler`, or something better?
That seems too incompatible to me.
I think a new API to interrupt only scheduler things might make more sense (related to #17363).

----------------------------------------
Bug #17470: Introduce non-blocking `Timeout.timeout`
https://bugs.ruby-lang.org/issues/17470#change-89574

* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
In this bug report, user complained that `Timeout.timeout` does not work correctly with scheduler: https://github.com/socketry/async-io/issues/43

We should introduce non-blocking timeout.

I propose the following:

```
rb_fiber_scheduler_with_timeout(VALUE scheduler, VALUE timeout, VALUE block)
```

We can directly modify `Timeout.timeout` to invoke this hook.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>