Welcome! Please see the About page for a little more info on how this works.

+1 vote
ago in core.async by

I've run into a few cases where flow/ping and flow/ping-proc are slow and timeout.

I was able to track the issue down to this line https://github.com/clojure/core.async/blob/b871f3519de6843a9f5ce66cf8d5c6cbe44d3222/src/main/clojure/clojure/core/async/flow/impl.clj#L273

(async/>!! c
            (walk/postwalk datafy
                           #::flow{:pid pid, :status status
                                   :state state,
                                   :count count
                                   :ins pins :outs pouts}))

This causes the state of the flow process to be traversed and datafied.

In one case, I had some process state that threw an exception when datafied due to an incomplete datafy extension. This caused flow/ping-proc to silently fail. No errors were reported.

In some other cases, the flow processes were working with large values. Walking the process state was slow and caused pings to respond slowly.

1 Answer

+1 vote
ago by
selected ago by
 
Best answer

Thanks, we've been discussing ways to specify filters for proc state datafication.

ago by
Preferably, there would be a way to just receive the state as it is without any datafication when pinging.
...