Currently a pipeline with Explorer operations and |> dbg() hangs and times out. The pipeline c:Kino.JS.Live.init/1 calls Kino.Frame.render/2, which may result in Kino.start_child/1 underneath. In the past Kino.Frame.render/2 used GenServer.cast, so the init callback would not block, finish and unlock the other Kino.start_child/1. However, we changed Kino.Frame.render/2 to use GenServer.call (https://github.com/livebook-dev/kino/commit/aae7a1b0a22f1b5273a5d058c5831b916513438d), so now init blocks, but the nested Kino.start_child/1 hangs, until init times out.
To fix it, I moved Kino.Frame.render/2 from init to a subsequent handle_info.
Currently a pipeline with Explorer operations and
|> dbg()
hangs and times out. The pipelinec:Kino.JS.Live.init/1
callsKino.Frame.render/2
, which may result inKino.start_child/1
underneath. In the pastKino.Frame.render/2
usedGenServer.cast
, so theinit
callback would not block, finish and unlock the otherKino.start_child/1
. However, we changedKino.Frame.render/2
to useGenServer.call
(https://github.com/livebook-dev/kino/commit/aae7a1b0a22f1b5273a5d058c5831b916513438d), so nowinit
blocks, but the nestedKino.start_child/1
hangs, untilinit
times out.To fix it, I moved
Kino.Frame.render/2
frominit
to a subsequenthandle_info
.