Skip to content

defservice can refer to stale protocols #290

Open
@vemv

Description

@vemv

Describe the Bug

I use TK in a REPL-heavy manner, using (reset) repeatedly and also running tests from the REPL or CIDER.

Sometimes, quite rarely I can hit an error in the form:

java.lang.IllegalArgumentException: No implementation of method: :lookup of protocol: #'my.ns/FooService found for class: my.ns$reify__695487

Where the former is a defprotocol and the latter is a defservice. They live in the same ns, one after the other respectively.

(Original namespaces are redacted)

Environment

TK 3.1.0

Additional Context

This error is analog to https://github.com/clojure/tools.namespace/tree/06de425a09333456319d9d06e96c181e4c2d7c0a#warnings-for-protocols , with the difference that a vanilla defprotocol+defrecord case can be worked around (by re- evaluating the defrecord isolatedly in the repl), while I wasn't able to work around defprotocol+defservice.

Maybe there's some caching going on?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions