Skip to content

Don't let client slowness possibly block JVM threads #4

Open
@vemv

Description

@vemv

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions