Does http://clojure.net need to be redeployed for every change to hfql/electric? I ran into issues connecting to http://clojure.net with an electric-manifest.edn on the classpath because it was appending the electric verison from the manifest to the connect url and throwing an exception. I was able to work around that by writing my manifest to a different filename, but I think/guess now I am hitting issues because the version of electric deployed on http://clojure.net is a different version from the latest snapshot. Errors in ๐งต
With no manifest (using shipped version in jar)
Worker shutdown.
2026-05-11T20:59:56.190712Z INFO SLF4J grayswandir io.undertow stopping server: Undertow - 2.3.10.Final
Execution error (ExceptionInfo) at hyperfiddle.navigator-agent/connect! (navigator_agent.clj:432).
Timed out waiting for agent-id from cloud proxyWith fake manifest to omit the electric version, I can connect to http://clojure.net and it doesn't crash me, but when trying to view the agent from the http://clojure.net cloud proxy I get this error in my server:
2026-05-11T21:02:41.307962Z WARN SLF4J grayswandir org.eclipse.jetty.ee9.nested.HttpChannel /
<<< error <<<
Root: java.lang.NoSuchFieldError - Class org.eclipse.jetty.server.HttpStream does not have member field 'java.lang.Exception CONTENT_NOT_CONSUMED'
Root stack trace:
org.eclipse.jetty.ee9.nested.AsyncContentProducer/consumeAll at AsyncContentProducer.java:186
org.eclipse.jetty.ee9.nested.BlockingContentProducer/consumeAll at BlockingContentProducer.java:93
org.eclipse.jetty.ee9.nested.HttpInput/consumeAll at HttpInput.java:185
org.eclipse.jetty.ee9.nested.Request/onCompleted at Request.java:1404
org.eclipse.jetty.ee9.nested.HttpChannel/onCompleted at HttpChannel.java:929
org.eclipse.jetty.ee9.nested.HttpChannel/handle at HttpChannel.java:507
org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler/handle at ContextHandler.java:3048
org.eclipse.jetty.server.handler.ContextHandler/handle at ContextHandler.java:1226
org.eclipse.jetty.server.handler.gzip.GzipHandler/handle at GzipHandler.java:621
org.eclipse.jetty.server.Server/handle at Server.java:197
org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker/run at HttpChannelState.java:788
org.eclipse.jetty.server.internal.HttpConnection/onFillable at HttpConnection.java:420
org.eclipse.jetty.server.internal.HttpConnection$FillableCallback/succeeded at HttpConnection.java:1809
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.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 >>>
2026-05-11T21:02:41.311456Z WARN SLF4J grayswandir org.eclipse.jetty.server.Response writeError: status=500, message=java.lang.IllegalStateException: s=IDLE rs=COMPLETED os=ABORTED is=IDLE awp=false se=false i=false al=0, response=org.eclipse.jetty.server.handler.ContextResponse@540d2793
<<< error <<<
Root: java.lang.IllegalStateException - s=IDLE rs=COMPLETED os=ABORTED is=IDLE awp=false se=false i=false al=0
Root stack trace:
org.eclipse.jetty.ee9.nested.HttpChannelState/unhandle at HttpChannelState.java:447
org.eclipse.jetty.ee9.nested.HttpChannel/handle at HttpChannel.java:651
org.eclipse.jetty.ee9.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler/handle at ContextHandler.java:3048
org.eclipse.jetty.server.handler.ContextHandler/handle at ContextHandler.java:1226
org.eclipse.jetty.server.handler.gzip.GzipHandler/handle at GzipHandler.java:621
org.eclipse.jetty.server.Server/handle at Server.java:197
org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker/run at HttpChannelState.java:788
org.eclipse.jetty.server.internal.HttpConnection/onFillable at HttpConnection.java:420
org.eclipse.jetty.server.internal.HttpConnection$FillableCallback/succeeded at HttpConnection.java:1809
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.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 >>>This is the sitemap I am using to connect to try and isolate the issue
(ns cloud-deploy.nav.debug
"Pure-data debug sitemap with no external dependencies (no datahike,
no dynvars, no integrant). Use to isolate cloud-proxy connectivity
issues from sitemap / data-layer bugs.
Quick connect from the REPL:
(require '[hyperfiddle.navigator-agent :as agent]
'[cloud-deploy.nav.debug :as debug])
(def h (agent/connect! \"\"
debug/sitemap
(fn [] {})))
On success `h` is a map with `:agent-id` and `:agent-url`; the agent
URL is the public link the cloud-proxy hands back.
To disconnect: (agent/disconnect! h)"
(:require [hyperfiddle.hfql2 :refer [hfql]]))
(def fruits
[{:id 1 :name "apple" :color "red" :calories 95}
{:id 2 :name "banana" :color "yellow" :calories 105}
{:id 3 :name "cherry" :color "red" :calories 50}
{:id 4 :name "grape" :color "purple" :calories 62}])
(defn all-fruits [] fruits)
(def sitemap
{`all-fruits
(hfql {(all-fruits) {* [:id :name :color :calories]}})}) In my deps
com.hyperfiddle/electric {:mvn/version "v3-alpha-SNAPSHOT"}
com.hyperfiddle/hyperfiddle {:mvn/version "v0-alpha-SNAPSHOT"}
com.hyperfiddle/hyperfiddle-agent {:mvn/version "v0-alpha-SNAPSHOT"}
info.sunng/ring-jetty9-adapter {:mvn/version "0.39.3"}
Same behavior on `info.sunng/ring-jetty9-adapter {:mvn/version "0.39.2"} alsohi, yes, i dont recognize the error you're getting but yes the http://clojure.net is intended for use from projects not already using electric for the reason you intuited
if you want to control the electric dependency and electric program you would need to self host the http://clojure.net instance
the datomic browser repo uses this pattern, see https://github.com/hyperfiddle/datomic-browser/blob/9e0d64d1f75356730019d941f8934d0952b8ba17/src/datomic_browser/main.clj#L14
none of this is documented yet as we are still potentially changing stuff
Thanks for the response. I thought it would be cool to demo on the public http://clojure.net but I'm happy to self-host