ruby-concurrency / concurrent-ruby

Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns.
https://ruby-concurrency.github.io/concurrent-ruby/
Other
5.68k stars 418 forks source link

caller_runs execution should not block the work queue #939

Closed chrisseaton closed 2 years ago

chrisseaton commented 2 years ago

caller_runs execution was being done while the executor lock was held. This caused the entire executor’s work queue to be blocked, with worker threads not able to take new work. We’ve restructured so that the execution is done as deferred work, outside of the lock.

Fixes #933.

chrisseaton commented 2 years ago

Ignore the JRuby failures - they're unrelated. Fixing on another PR.

chrisseaton commented 2 years ago

Please re-review @eregon.