Skip to content

"No ns form found ..." when using boot-reload #103

Open
@pandeiro

Description

@pandeiro

A very rare (maybe 5% or less of the time) bug I am hitting when using boot-cljs, boot-reload and multiple cljs.edn builds is the "No ns form found ...". It appears that the file that boot-reload is injecting prior to cljs compilation is empty when the (cljs ...) task tries to compile it:

Adding :require adzerk.boot-reload to main.cljs.edn...
Compiling ClojureScript...
? main.js
? tests.js
java.util.concurrent.ExecutionException: clojure.lang.ExceptionInfo: failed compiling file:/.boot/cache/tmp/app/1/-hru27v/boot/cljs/main12754.cljs {:file #object[java.io.File 0x48a25888 "/.boot/cache/tmp/app/1/-hru27v/boot/cljs/main12754.cljs"]}
             clojure.lang.ExceptionInfo: failed compiling file:/.boot/cache/tmp/app/1/-hru27v/boot/cljs/main12754.cljs
    data: {#object[clojure.lang.Keyword 0x2df8c34f ":file"] #object[java.io.File 0x48a25888 "/.boot/cache/tmp/app/1/-hru27v/boot/cljs/main12754.cljs"]}
             clojure.lang.ExceptionInfo: No ns form found in file:/.boot/cache/tmp/app/1/7o2s6s/adzerk/boot_reload.cljs at line 1 /.boot/cache/tmp/app/1/-hru27v/boot/cljs/main12754.cljs
    data: {#object[clojure.lang.Keyword 0x2df8c34f ":file"] "/.boot/cache/tmp/app/1/-hru27v/boot/cljs/main12754.cljs", #object[clojure.lang.Keyword 0x26a0e21e ":line"] 1, #object[clojure.lang.Keyword 0x5164ac91 ":column"] 1, #object[clojure.lang.Keyword 0x43da0d0f ":tag"] #object[clojure.lang.Keyword 0x25b13eda ":cljs/analysis-error"]}
               java.lang.AssertionError: No ns form found in file:/.boot/cache/tmp/app/1/7o2s6s/adzerk/boot_reload.cljs
                             cljs.analyzer$parse_ns$fn__2136.invoke  analyzer.cljc: 2706
                                      cljs.analyzer$parse_ns.invoke  analyzer.cljc: 2660
                                      cljs.analyzer$parse_ns.invoke  analyzer.cljc: 2651
                      cljs.analyzer$macro_autoload_ns_QMARK_.invoke  analyzer.cljc: 1782
cljs.analyzer$desugar_ns_specs$to_macro_specs__1835$fn__1838.invoke  analyzer.cljc: 1817
                                             clojure.core/filter/fn       core.clj: 2686
                                                                ...                     
                                                   clojure.core/seq       core.clj:  137
                                                clojure.core/map/fn       core.clj: 2616
                                                                ...                     
                                                   clojure.core/seq       core.clj:  137
                              cljs.analyzer$desugar_ns_specs.invoke  analyzer.cljc: 1825
                             cljs.analyzer$eval1863$fn__1865.invoke  analyzer.cljc: 1874
                                                                ...                     
                             cljs.analyzer$analyze_seq_STAR_.invoke  analyzer.cljc: 2368
                        cljs.analyzer$analyze_seq_STAR__wrap.invoke  analyzer.cljc: 2373
                                   cljs.analyzer$analyze_seq.invoke  analyzer.cljc: 2394
                                  cljs.analyzer$analyze_form.invoke  analyzer.cljc: 2503
                                 cljs.analyzer$analyze_STAR_.invoke  analyzer.cljc: 2550
                                       cljs.analyzer$analyze.invoke  analyzer.cljc: 2566
                   cljs.compiler$compile_file_STAR_$fn__3342.invoke  compiler.cljc: 1125
                                cljs.compiler$with_core_cljs.invoke  compiler.cljc: 1053
                            cljs.compiler$compile_file_STAR_.invoke  compiler.cljc: 1076
                         cljs.compiler$compile_file$fn__3383.invoke  compiler.cljc: 1237
                                  cljs.compiler$compile_file.invoke  compiler.cljc: 1216
                                  cljs.compiler$compile_root.invoke  compiler.cljc: 1291
                                           cljs.closure/compile-dir    closure.clj:  438
                                           cljs.closure/eval3772/fn    closure.clj:  478
                                         cljs.closure/eval3724/fn/G    closure.clj:  383
                                           cljs.closure/eval3785/fn    closure.clj:  492
                                         cljs.closure/eval3724/fn/G    closure.clj:  383
                          cljs.build.api/inputs/reify/compile-input        api.clj:  182
                                                clojure.core/map/fn       core.clj: 2624
                                                                ...                     
                                                   clojure.core/seq       core.clj:  137
                                                 clojure.core/apply       core.clj:  630
                                                clojure.core/mapcat       core.clj: 2660
                                                                ...                     
                               cljs.build.api/inputs/reify/-compile        api.clj:  186
                                                 cljs.closure/build    closure.clj: 1671
                                               cljs.build.api/build        api.clj:  219
                              adzerk.boot-cljs.impl/compile-cljs/fn       impl.clj:   63
                                 adzerk.boot-cljs.impl/compile-cljs       impl.clj:   62
                                                                ...                     
                                                 clojure.core/apply       core.clj:  630
                                              boot.pod/eval-fn-call        pod.clj:  184
                                                  boot.pod/call-in*        pod.clj:  191
                                                                ...                     
                                                  boot.pod/call-in*        pod.clj:  194
                                           adzerk.boot-cljs/compile  boot_cljs.clj:   75
                                      adzerk.boot-cljs/compile-1/fn  boot_cljs.clj:  138
                                clojure.core/binding-conveyor-fn/fn       core.clj: 1916

Could this be related to some race condition with the cljs task? The low reproducibility suggests something like that to me, prior to going into the impl.cljs and inspecting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions