This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-03-02
Channels
- # announcements (25)
- # babashka (76)
- # beginners (74)
- # biff (36)
- # calva (11)
- # cider (5)
- # clerk (43)
- # cljs-dev (4)
- # cljsrn (12)
- # clojure (111)
- # clojure-austin (14)
- # clojure-europe (82)
- # clojure-nl (2)
- # clojure-norway (5)
- # clojure-uk (1)
- # clojurescript (36)
- # core-async (13)
- # cursive (30)
- # datomic (12)
- # fulcro (6)
- # honeysql (9)
- # hyperfiddle (73)
- # instaparse (3)
- # introduce-yourself (1)
- # membrane (40)
- # nbb (2)
- # off-topic (6)
- # other-languages (9)
- # polylith (33)
- # reagent (2)
- # reitit (7)
- # rum (7)
- # shadow-cljs (47)
- # tools-deps (10)
- # vim (11)
- # xtdb (16)
Hi, @tony.kay — I spent some time yesterday getting a CLJ version of com.example.membrane-ui.http-remote
running, and got some df/load!
running. This morning, I actually got a RAD report to load — a frankenstein app that cannot shamble on its own, lots of REPL commands required to get it running, but can render something!
But there’s some machinery that is stuck — the report UISM is stuck in loading
state (although one time I saw it stuck in gathering-parameters
state).
I think the reason is that there are 13 transactions stuck in the the com.fulcrologic.fulcro.algorithms.tx-processing
queue. (Screenshot from Portal attached.)
Can you speculate on what might be happening? (I noticed that 50% of the df/load!
operations don’t actually result in the network message being processed — repeating the load will eventually trigger all the processing to happen. I even tried manually calling process-queue!
, but I did this without trying to understand how it all works.)
PS: If I can get the RAD report to load, I’m sure the report to render — I just need current-rows
to be populated. 🙂 🎉. (Screenshot of the row count attached, too. Currently showing 0. 🙂
cc @smith.adriane
My guess is that your new remote doesn’t handle exceptions/errors properly. You MUST always tell Fulcro that the network request is done, even if it fails. There’s an ok-handler and an error-handler. The queue processes one thing at a time by default, and will not continue until it knows the state of the one that is “current”
The :parallel? true
flag on load bypasses the queue, which makes it harder to reason about an app, but allows parallel network requests (which also loses ordering)
Fulcro is responsible for moving things along. There should be no bugs there. It has to be your remote not catching something or not reporting a non-200 result.
Okay, thanks, @tony.kay! I’m getting closer, I think — your speculation is right on. I definitely am very suspicious of that region of code that I hacked on — I may just take out the asynchronous clj-http call, just to try to simplify some things. And get a test written to confirm that active-queue is eventually emptied.