You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since there is only one worker, the worker will start executing g. Then when g calls f, f can't be scheduled anywhere because there is only one worker and it is being used to execute g. But that worker won't finish executing g until f has finished executing. Hence deadlock.
There are two natural solutions (that I can think of at the moment).
Detect the situation (probably in the local scheduler) and start more workers so that f can be scheduled.
Make remote functions re-entrant in the sense that when g calls ray.get, it can get a new task from the local scheduler, execute it, and then resume executing g.
The text was updated successfully, but these errors were encountered:
This is partially addressed by #286. However, that some workloads could require an arbitrarily large number of workers to be started, so this is only a partial solution.
Further discussion should probably be continued in a different issue because the issue is no longer deadlock, but rather too many workers being started.
The following causes the system to hang.
Since there is only one worker, the worker will start executing
g
. Then wheng
callsf
,f
can't be scheduled anywhere because there is only one worker and it is being used to executeg
. But that worker won't finish executingg
untilf
has finished executing. Hence deadlock.There are two natural solutions (that I can think of at the moment).
f
can be scheduled.g
callsray.get
, it can get a new task from the local scheduler, execute it, and then resume executingg
.The text was updated successfully, but these errors were encountered: