clj-commons / manifold

A compatibility layer for event-driven abstractions
1.02k stars 106 forks source link

ClassNotFoundException exception in deferred #158

Closed scramjet closed 5 years ago

scramjet commented 5 years ago

Hello, I'm getting a very weird error from Manifold running as part of Aleph 0.4.7-alpha3 (attached stack trace). I'm using Manifold 0.1.9-alpha2, but overriding that back to 0.1.8 doesn't make a difference, nor does rolling Aleph back to 0.4.6.

It appears something is trying to load a class named clojure/lang/PersistentArrayMap which obviously is mis-named from its dotted form. But I'm mystified by the root cause being a sudden dive into clojure.lang.RT.readString from the class init method for manifold.deferred.Deferred$fn__33566?!

I'm stumped. Any ideas?

Nov 01, 2018 3:01:30 PM io.netty.util.concurrent.DefaultPromise
WARNING: An exception was thrown by aleph.netty$wrap_future$reify__46669.operationComplete(): java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
    at manifold.deferred.Deferred.success(deferred.clj:398)
    at manifold.deferred$success_BANG_.invokeStatic(deferred.clj:243)
    at manifold.deferred$success_BANG_.invoke(deferred.clj:240)
    at aleph.netty$wrap_future$reify__46669.operationComplete(netty.clj:202)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:485)
    at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
    at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:94)
    at io.netty.util.concurrent.MultithreadEventExecutorGroup$1.operationComplete(MultithreadEventExecutorGroup.java:117)
    at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
    at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:485)
    at io.netty.util.concurrent.DefaultPromise.access$000(DefaultPromise.java:33)
    at io.netty.util.concurrent.DefaultPromise$1.run(DefaultPromise.java:435)
    at io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:248)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: clojure/lang/PersistentArrayMap
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at clojure.lang.RT.classForName(RT.java:2204)
    at clojure.lang.RT.classForName(RT.java:2213)
    at clojure.lang.Reflector.invokeStaticMethod(Reflector.java:199)
    at clojure.lang.LispReader$EvalReader.invoke(LispReader.java:1308)
    at clojure.lang.LispReader$DispatchReader.invoke(LispReader.java:843)
    at clojure.lang.LispReader.read(LispReader.java:275)
    at clojure.lang.LispReader.read(LispReader.java:210)
    at clojure.lang.LispReader.access$200(LispReader.java:41)
    at clojure.lang.LispReader$MetaReader.invoke(LispReader.java:944)
    at clojure.lang.LispReader.read(LispReader.java:275)
    at clojure.lang.LispReader.readDelimitedList(LispReader.java:1384)
    at clojure.lang.LispReader$ListReader.invoke(LispReader.java:1232)
    at clojure.lang.LispReader.read(LispReader.java:275)
    at clojure.lang.LispReader.read(LispReader.java:210)
    at clojure.lang.LispReader.access$200(LispReader.java:41)
    at clojure.lang.LispReader$EvalReader.invoke(LispReader.java:1287)
    at clojure.lang.LispReader$DispatchReader.invoke(LispReader.java:843)
    at clojure.lang.LispReader.read(LispReader.java:275)
    at clojure.lang.LispReader.read(LispReader.java:206)
    at clojure.lang.LispReader.read(LispReader.java:195)
    at clojure.lang.RT.readString(RT.java:1871)
    at clojure.lang.RT.readString(RT.java:1866)
    at manifold.deferred.Deferred$fn__33566.<clinit>(deferred.clj:398)
    ... 16 more
rborer commented 5 years ago

Hi,

Can you paste the output of lein deps :tree (given that you're using leiningen)? I'm suspecting that clojure runtime may be missing from your dependency given the error :thinking:

scramjet commented 5 years ago

Attached deps.txt.

Everything else is working fine, in fact this error only happens when closing down the server.

rborer commented 5 years ago

Oh, it's only when server is closing down. So it's definitely what is mentioned under https://github.com/ztellman/aleph/pull/406#issuecomment-434446433 . It's a known issue already and seems tricky to diagnose according to the latest comments...

scramjet commented 5 years ago

Ah yes, sorry (I did search for ClassNotFoundException in issues before posting and didn't find anything).

It's not critical, just annoying. And very perplexing! Thanks for following up.

scramjet commented 5 years ago

I'll close this as https://github.com/ztellman/aleph/issues/365 and https://github.com/ztellman/aleph/pull/406 track it.