Closed
Description
I'm having a problem with the Schedulers.from(Executor)
wrapper when the Executor
is singled threaded and the resulting Scheduler
is used with the ObserveOn operator.
A fast producer and a slow subscriber (either with backpressure or callstack blocking) creates a situation where the ObserveOn operator never yields the Executor
's thread and nothing submitted directly to the Executor
can run.
I think the fundamental problem is in the implementation of rx.internal.schedulers.ExecutorScheduler.ExecutorSchedulerWorker
in the run()
method. The method will continue looping if more scheduler tasks are available instead of resubmitting itself to the Executor
and allowing other executor tasks to run.