hyperfiddle

noonian 2026-05-11T21:00:13.139409Z

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 ๐Ÿงต

noonian 2026-05-11T21:01:29.405119Z

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 proxy

noonian 2026-05-11T21:03:27.093529Z

With 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 >>>

noonian 2026-05-11T21:08:30.337449Z

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]}})})

noonian 2026-05-11T21:14:02.867079Z

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"} also

Dustin Getz (Hyperfiddle) 2026-05-12T01:15:17.622189Z

hi, 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

Dustin Getz (Hyperfiddle) 2026-05-12T01:16:15.417569Z

if you want to control the electric dependency and electric program you would need to self host the http://clojure.net instance

Dustin Getz (Hyperfiddle) 2026-05-12T01:18:00.942299Z

the datomic browser repo uses this pattern, see https://github.com/hyperfiddle/datomic-browser/blob/9e0d64d1f75356730019d941f8934d0952b8ba17/src/datomic_browser/main.clj#L14

Dustin Getz (Hyperfiddle) 2026-05-12T01:18:43.686839Z

none of this is documented yet as we are still potentially changing stuff

๐Ÿ‘ 1
1
noonian 2026-05-12T01:41:04.750289Z

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

๐Ÿ™‚ 1