Open
Description
Context
As discussed in clojure-emacs/cider-nrepl#773 (comment), it seems possible that given a slow- or buggy-enough client, sending logs from the JVM would actually block the given JVM thread that is performing the logging.
i.e., clojure code like:
(log/error :foo)
might block if Emacs happens to have some sort of issue. Which doesn't seem incredibly rare given Emacs' customizability.
Proposed solution
Make sure that the actual logging call happens from a thread executor. One communicates with said thread by message passing. One can check whether the thread is alive by using e.g. deref
with its [ref timeout-ms timeout-val]
extended signature.
And one could have a nrepl command for "resetting" the executor to a new one, which would help if it ever got stuck.
Metadata
Metadata
Assignees
Labels
No labels