Hi everyone, I'm getting an unexpected error Hash is missing on dependency ... of the form (defrecord ...).` I see there was some code merged to main yesterday that seems to fix a similar error. Is this in fact the same issue? Or is there some other issue with defrecord that makes it incompatible with clerk?
hi @pieterbreed, this sounds indeed like what @andrea712 fixed yesterday. Can you try the latest main to confirm it is so?
I was just now trying that and indeed it fixes the issue for me ππ½
I had to manually include org.clojure.clr/tools.namespaec in my project's (lein) dependencies... not sure if that declaration is maybe missing somewhere?
great, we plan to do a release with that in the coming days
strange, not sure about that. Is that maybe related to lein? How do you use a git dep with lein?
heh - π
- I edited the bb/shared.clj file to change the version to include an extra string value, then ran bb run install-jar to get it into my local .m2 , then included the modified version of clerk in project.clj.
I see. And you got an error related to tools namespace?
yes, unless I included the that extra dependency too, then it's working
strange, can you share the stacktrace?
after require nextjournal.clerk I get this:
2. Unhandled clojure.lang.Compiler$CompilerException
Error compiling nextjournal/clerk/cljs_libs.clj at (1:1)
{:clojure.error/phase :execution,
:clojure.error/line 1,
:clojure.error/column 1,
:clojure.error/source "nextjournal/clerk/cljs_libs.clj"}
Compiler.java: 7671 clojure.lang.Compiler/load
RT.java: 381 clojure.lang.RT/loadResourceScript
RT.java: 372 clojure.lang.RT/loadResourceScript
RT.java: 459 clojure.lang.RT/load
RT.java: 424 clojure.lang.RT/load
core.clj: 6162 clojure.core/load/fn
core.clj: 6161 clojure.core/load
core.clj: 6145 clojure.core/load
RestFn.java: 408 clojure.lang.RestFn/invoke
core.clj: 5934 clojure.core/load-one
core.clj: 5929 clojure.core/load-one
core.clj: 5976 clojure.core/load-lib/fn
core.clj: 5975 clojure.core/load-lib
core.clj: 5954 clojure.core/load-lib
RestFn.java: 142 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6017 clojure.core/load-libs
core.clj: 6001 clojure.core/load-libs
RestFn.java: 137 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6039 clojure.core/require
core.clj: 6039 clojure.core/require
RestFn.java: 512 clojure.lang.RestFn/invoke
view.clj: 1 nextjournal.clerk.view/eval17962/loading--auto--
view.clj: 1 nextjournal.clerk.view/eval17962
view.clj: 1 nextjournal.clerk.view/eval17962
Compiler.java: 7201 clojure.lang.Compiler/eval
Compiler.java: 7190 clojure.lang.Compiler/eval
Compiler.java: 7659 clojure.lang.Compiler/load
RT.java: 381 clojure.lang.RT/loadResourceScript
RT.java: 372 clojure.lang.RT/loadResourceScript
RT.java: 459 clojure.lang.RT/load
RT.java: 424 clojure.lang.RT/load
core.clj: 6162 clojure.core/load/fn
core.clj: 6161 clojure.core/load
core.clj: 6145 clojure.core/load
RestFn.java: 408 clojure.lang.RestFn/invoke
core.clj: 5934 clojure.core/load-one
core.clj: 5929 clojure.core/load-one
core.clj: 5976 clojure.core/load-lib/fn
core.clj: 5975 clojure.core/load-lib
core.clj: 5954 clojure.core/load-lib
RestFn.java: 142 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6017 clojure.core/load-libs
core.clj: 6001 clojure.core/load-libs
RestFn.java: 137 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6039 clojure.core/require
core.clj: 6039 clojure.core/require
RestFn.java: 1789 clojure.lang.RestFn/invoke
builder.clj: 1 nextjournal.clerk.builder/eval16130/loading--auto--
builder.clj: 1 nextjournal.clerk.builder/eval16130
builder.clj: 1 nextjournal.clerk.builder/eval16130
Compiler.java: 7201 clojure.lang.Compiler/eval
Compiler.java: 7190 clojure.lang.Compiler/eval
Compiler.java: 7659 clojure.lang.Compiler/load
RT.java: 381 clojure.lang.RT/loadResourceScript
RT.java: 372 clojure.lang.RT/loadResourceScript
RT.java: 459 clojure.lang.RT/load
RT.java: 424 clojure.lang.RT/load
core.clj: 6162 clojure.core/load/fn
core.clj: 6161 clojure.core/load
core.clj: 6145 clojure.core/load
RestFn.java: 408 clojure.lang.RestFn/invoke
core.clj: 5934 clojure.core/load-one
core.clj: 5929 clojure.core/load-one
core.clj: 5976 clojure.core/load-lib/fn
core.clj: 5975 clojure.core/load-lib
core.clj: 5954 clojure.core/load-lib
RestFn.java: 142 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6017 clojure.core/load-libs
core.clj: 6001 clojure.core/load-libs
RestFn.java: 137 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6039 clojure.core/require
core.clj: 6039 clojure.core/require
RestFn.java: 1289 clojure.lang.RestFn/invoke
clerk.clj: 1 nextjournal.clerk/eval10189/loading--auto--
clerk.clj: 1 nextjournal.clerk/eval10189
clerk.clj: 1 nextjournal.clerk/eval10189
Compiler.java: 7201 clojure.lang.Compiler/eval
Compiler.java: 7190 clojure.lang.Compiler/eval
Compiler.java: 7659 clojure.lang.Compiler/load
RT.java: 381 clojure.lang.RT/loadResourceScript
RT.java: 372 clojure.lang.RT/loadResourceScript
RT.java: 459 clojure.lang.RT/load
RT.java: 424 clojure.lang.RT/load
core.clj: 6162 clojure.core/load/fn
core.clj: 6161 clojure.core/load
core.clj: 6145 clojure.core/load
RestFn.java: 408 clojure.lang.RestFn/invoke
core.clj: 5934 clojure.core/load-one
core.clj: 5929 clojure.core/load-one
core.clj: 5976 clojure.core/load-lib/fn
core.clj: 5975 clojure.core/load-lib
core.clj: 5954 clojure.core/load-lib
RestFn.java: 142 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6017 clojure.core/load-libs
core.clj: 6001 clojure.core/load-libs
RestFn.java: 137 clojure.lang.RestFn/applyTo
core.clj: 669 clojure.core/apply
core.clj: 6039 clojure.core/require
core.clj: 6039 clojure.core/require
RestFn.java: 408 clojure.lang.RestFn/invoke
REPL: 43 afrolabs.gometro-bridge.core/eval10183
REPL: 43 afrolabs.gometro-bridge.core/eval10183
Compiler.java: 7201 clojure.lang.Compiler/eval
interruptible_eval.clj: 106 nrepl.middleware.interruptible-eval/evaluator/run/fn
interruptible_eval.clj: 101 nrepl.middleware.interruptible-eval/evaluator/run
session.clj: 229 nrepl.middleware.session/session-exec/session-loop
SessionThread.java: 21 nrepl.SessionThread/run
ah ok, looks like weβve missed a dep, will fix this before the release, thanks!
I seem to have run into something else unexpected. I'm not 100% sure what is triggering it, but I can show the following. This is the smallest reproducible I can create. I have (require '[java-time.api :as t]). This next is in my notebook:
(let [ds (tech.v3.dataset/mapseq-parser)]
(doseq [x (for [i (range 100)]
{:x i
:xts (t/instant)})]
(ds x))
(ds))
Error on the clerk output page (live browser) is this: `Unhandled java.lang.ClassCastException class clojure.lang.Reduced cannot be cast to class clojure.lang.ITransientCollection (clojure.lang.Reduced and clojure.lang.ITransientCollection are in unnamed module of loader 'app')`
β’ all of this works fine in the repl without errors, only the clerk output shows the error
β’ In the example above if I remove the line :xts (t/instant) it works in clerk, so somehow the instant is involved (?)
β’ In the example above, if I change 100 to 10 it works with the (t/instant). So the size of the collection is somehow involved.
Here is the visible part of the stack trace I see in the clerk output.
core.clj: 3351 clojure.core/persistent!
core.clj: 6965 clojure.core/into/rf--8532
core.clj: 2820 clojure.core/filter/fn--5958/fn--5959
core.clj: 7365 clojure.core/map-indexed/fn--8634/fn--8635
core.clj: 2889 clojure.core/take/fn--5974/fn--5975
core.clj: 2936 clojure.core/drop/fn--5990/fn--5991
core.clj: 6949 clojure.core/transduce
core.clj: 6963 clojure.core/into
core.clj: 6951 clojure.core/into
viewer.cljc: 1626 nextjournal.clerk.viewer/present+paginate-children
viewer.cljc: 1617 nextjournal.clerk.viewer/present+paginate-children
viewer.cljc: 1690 nextjournal.clerk.viewer/present*
viewer.cljc: 1668 nextjournal.clerk.viewer/present*
viewer.cljc: 1628 nextjournal.clerk.viewer/present+paginate-children/fn--18377
core.clj: 7367 clojure.core/map-indexed/fn--8634/fn--8635
core.clj: 2894 clojure.core/take/fn--5974/fn--5975
core.clj: 2942 clojure.core/drop/fn--5990/fn--5991
protocols.clj: 49 clojure.core.protocols/iter-reduce
protocols.clj: 75 clojure.core.protocols/fn--8230
protocols.clj: 75 clojure.core.protocols/fn--8230
protocols.clj: 13 clojure.core.protocols/fn--8178/G--8173--8191
core.clj: 6948 clojure.core/transduce
core.clj: 6963 clojure.core/into
core.clj: 6951 clojure.core/into
viewer.cljc: 1626 nextjournal.clerk.viewer/present+paginate-children
viewer.cljc: 1617 nextjournal.clerk.viewer/present+paginate-children
viewer.cljc: 1690 nextjournal.clerk.viewer/present*
viewer.cljc: 1668 nextjournal.clerk.viewer/present*
viewer.cljc: 1628 nextjournal.clerk.viewer/present+paginate-children/fn--18377
core.clj: 7367 clojure.core/map-indexed/fn--8634/fn--8635
core.clj: 2894 clojure.core/take/fn--5974/fn--5975
core.clj: 2942 clojure.core/drop/fn--5990/fn--5991
ArraySeq.java: 119 clojure.lang.ArraySeq
core.clj: 6947 clojure.core/transduce
core.clj: 6963 clojure.core/into
core.clj: 6951 clojure.core/into
viewer.cljc: 1626 nextjournal.clerk.viewer/present+paginate-children
viewer.cljc: 1617 nextjournal.clerk.viewer/present+paginate-children
viewer.cljc: 1690 nextjournal.clerk.viewer/present*
viewer.cljc: 1668 nextjournal.clerk.viewer/present*
viewer.cljc: 1773 nextjournal.clerk.viewer/present
I think the stack trace is longer, but I can't scroll down in the browser window.Just to be clear, this is also on current origin/main.
@pieterbreed Iβve also asked on tech.ml.dataset if this is expected behavior https://github.com/techascent/tech.ml.dataset/issues/413
hi @pieterbreed, can you push a repro we can try somewhere?
Sure, repro is short, ok if I put it here?
(ns dataset-issueout-of-order-vehicle-updates
{:nextjournal.clerk/visibility {:code :hide}}
(:require
[nextjournal.clerk :as clerk]
[java-time.api :as t]
[tech.v3.dataset :as dataset]))
(comment
(clerk/serve! {:host "0.0.0.0"
:watch-paths ["notebooks"]})
(clerk/halt!)
)
;; This works
(let [ds (tech.v3.dataset/mapseq-parser)]
(doseq [x (for [i (range 10)]
{:x i
:xts (t/instant)})]
(ds x))
(ds))
;; This throws:
;; Unhandled java.lang.ClassCastException
;; class clojure.lang.Reduced cannot be cast to class clojure.lang.ITransientCollection
;; (clojure.lang.Reduced and clojure.lang.ITransientCollection are in unnamed module of loader 'app')
(let [ds (tech.v3.dataset/mapseq-parser)]
(doseq [x (for [i (range 100)]
{:x i
:xts (t/instant)})]
(ds x))
(ds))would prefer something we can clone and run
with the deps etc
if itβs not too much trouble
thanks!
@pieterbreed Iβve filed https://github.com/nextjournal/clerk/issues/677 but Iβm a little out of my depth here, do you know about about this?
Unfortunately I do not. I started learning clerk and tech.v3.dataset as part of the same learning journey -> data science tooling in clojure, so both are new to me...
maybe some of the people in the scicloj community would be good to ask