Fork me on GitHub
#core-async
<
2017-11-03
>
noisesmith23:11:06

what does it mean if (take! c f) calls f as expected if I haven’t started my app, but if I have started my app it only calls f if c already has data queued

noisesmith23:11:32

does this mean that something is starving the put queue or the go threadpool?

noisesmith23:11:17

(it’s likely there’s something bad going on in core.async world after a radical change to a lib, but I’m wondering how to look at and identify the specific problem, beyond looking very hard at the code until I see what is wrong)

hiredman23:11:04

the async threadpool being starved would be my guess

hiredman23:11:14

not starved, but blocked so the threads aren't able to process work

noisesmith23:11:20

is there a good approach beyond guessing and reading jstack output?

hiredman23:11:40

if (clojure.core.async.impl.dispatch/run #(println "Hello World")) doesn't print

noisesmith23:11:41

considering that everything is owned by the core.async threads so it can be hard to see where things are happening

noisesmith23:11:25

yup, that must be it, it failed to print

noisesmith23:11:38

so somebody is blocking all the go blocks, good to know

hiredman23:11:47

the core.async threads will be tagged with "async-dispatch-" when you look through jstack

noisesmith23:11:59

OK - yeah, I found them, all blocking on the same code, thanks for the suggestions