I'm posting an electric error because it said "please report this issue", but the root cause was I was throwing exceptions in my code (likely in cleanup thunk to m/observe?). Message in ๐งต
it is safe to throw an exception in cleanup thunk
<<< error <<<
Root: clojure.lang.ExceptionInfo - assertion failed: (some? (aget state on-message-slot)) for (aget state on-message-slot) = nil
electric on-message handler is not available. The electric server process failed to properly shut down *before* receiving the current message. Please report this issue.
data: {:dustingetz.check/v nil, :dustingetz.check/pred #function[clojure.core/some?]}
Root stack trace:
dustingetz.check$_is/invokeStatic at check.cljc:25
dustingetz.check$_is/invoke at check.cljc:22
hyperfiddle.electric_ring_adapter3$electric_ws_handler$on_message__96602/invoke at electric_ring_adapter3.clj:206
clojure.lang.AFn/applyToHelper at AFn.java:156
clojure.lang.AFn/applyTo at AFn.java:144
clojure.core$apply/invokeStatic at core.clj:669
clojure.core$apply/invoke at core.clj:662
hyperfiddle.electric_ring_adapter3$ring_ws_handler$fn__96612$fn__96613/doInvoke at electric_ring_adapter3.clj:236
clojure.lang.RestFn/invoke at RestFn.java:426
ring.websocket$eval96250$fn__96254/invoke at websocket.clj:13
ring.websocket.protocols$fn__310$G__299__319/invoke at protocols.clj:3
ring.adapter.jetty9.websocket$proxy_ws_adapter$reify__522/onWebSocketText at websocket.clj:53
org.eclipse.jetty.websocket.core.util.MethodHolder/doInvoke at MethodHolder.java:85
org.eclipse.jetty.websocket.core.util.MethodHolder$Binding/invoke at MethodHolder.java:119
org.eclipse.jetty.websocket.core.messages.StringMessageSink/accept at StringMessageSink.java:66
org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler/acceptFrame at JettyWebSocketFrameHandler.java:398
org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler/onTextFrame at JettyWebSocketFrameHandler.java:369
org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler/onFrame at JettyWebSocketFrameHandler.java:219
org.eclipse.jetty.websocket.core.WebSocketCoreSession$IncomingAdaptor/lambda$onFrame$0 at WebSocketCoreSession.java:666
org.eclipse.jetty.server.handler.ContextHandler$ScopedContext/run at ContextHandler.java:1699
org.eclipse.jetty.server.handler.ContextHandler$ScopedContext/run at ContextHandler.java:1686
org.eclipse.jetty.websocket.core.server.internal.AbstractHandshaker$1/handle at AbstractHandshaker.java:178
org.eclipse.jetty.websocket.core.WebSocketCoreSession$IncomingAdaptor/onFrame at WebSocketCoreSession.java:666
org.eclipse.jetty.websocket.core.AbstractExtension/nextIncomingFrame at AbstractExtension.java:146
org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension/nextIncomingFrame at PerMessageDeflateExtension.java:242
org.eclipse.jetty.websocket.core.util.WebSocketDemander/emitFrame at WebSocketDemander.java:113
org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingDemander/inflate at PerMessageDeflateExtension.java:490
org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingDemander/handle at PerMessageDeflateExtension.java:415
org.eclipse.jetty.websocket.core.util.WebSocketDemander/process at WebSocketDemander.java:236
org.eclipse.jetty.util.IteratingCallback/processing at IteratingCallback.java:377
org.eclipse.jetty.util.IteratingCallback/lambda$doOnSuccessProcessing$0 at IteratingCallback.java:271
org.eclipse.jetty.util.ExceptionUtil/callAndThen at ExceptionUtil.java:503
org.eclipse.jetty.util.IteratingCallback/doOnSuccessProcessing at IteratingCallback.java:271
org.eclipse.jetty.util.IteratingCallback/succeeded at IteratingCallback.java:575
org.eclipse.jetty.websocket.core.util.WebSocketDemander/onFrame at WebSocketDemander.java:168
org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension/onFrame at PerMessageDeflateExtension.java:97
org.eclipse.jetty.websocket.core.ExtensionStack/onFrame at ExtensionStack.java:115
org.eclipse.jetty.websocket.core.WebSocketCoreSession/onFrame at WebSocketCoreSession.java:475
org.eclipse.jetty.websocket.core.WebSocketConnection/onFrame at WebSocketConnection.java:296
org.eclipse.jetty.websocket.core.WebSocketConnection/fillAndParse at WebSocketConnection.java:499
org.eclipse.jetty.websocket.core.WebSocketConnection/onFillable at WebSocketConnection.java:365
org.eclipse.jetty.io.AbstractConnection$FillableCallback/succeeded at AbstractConnection.java:319
org.eclipse.jetty.io.FillInterest/fillable at FillInterest.java:105
org.eclipse.jetty.io.SelectableChannelEndPoint$1/run at SelectableChannelEndPoint.java:54
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy/runTask at AdaptiveExecutionStrategy.java:492
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy/epcRunTask at AdaptiveExecutionStrategy.java:428
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy/consumeTask at AdaptiveExecutionStrategy.java:401
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy/tryProduce at AdaptiveExecutionStrategy.java:255
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy/run at AdaptiveExecutionStrategy.java:204
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread/run at ReservedThreadExecutor.java:317
org.eclipse.jetty.util.thread.QueuedThreadPool/runJob at QueuedThreadPool.java:1009
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner/doRunJob at QueuedThreadPool.java:1240
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner/run at QueuedThreadPool.java:1194
java.lang.Thread/run at Thread.java:1447
>>> error >>>thanks
yeah iirc i don't think you can throw in the disposal phase, it's a missionary flow protocol violation iirc (the team will correct me if this is wrong)
thank you for reporting