juxt / yada

A powerful Clojure web library, full HTTP, full async - see https://juxt.pro/yada/index.html
MIT License
735 stars 97 forks source link

HEAD requests throw exceptions #206

Open danielcompton opened 7 years ago

danielcompton commented 7 years ago

I've noticed that HEAD requests seem to be throwing unconsumed deferred errors.

16:41:24.770 WARN  manifold.deferred    - unconsumed deferred in error state, make sure you're using `catch`.
                               java.lang.Thread.run              Thread.java:  745
 java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  617
  java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1142
                java.util.concurrent.FutureTask.run          FutureTask.java:  266
                                                ...
                clojure.core/binding-conveyor-fn/fn                 core.clj: 2027
                            clojure.core/pmap/fn/fn                 core.clj: 6897
                                                ...
                          clojure.core/bound-fn*/fn                 core.clj: 2000
                                 clojure.core/apply                 core.clj:  661
                                                ...
                        clojure.core/with-bindings*                 core.clj: 1970 (repeats 2 times)
                                 clojure.core/apply                 core.clj:  657
                                                ...
                      eftest.runner/test-vars/fn/fn               runner.clj:   26
                       clojure.test/default-fixture                 test.clj:  686
                   eftest.runner/test-vars/fn/fn/fn               runner.clj:   26
                   eftest.runner/test-vars/test-var               runner.clj:   22
                              clojure.test/test-var                 test.clj:  716
                           clojure.test/test-var/fn                 test.clj:  716
                      co.deps.routes.deploy-test/fn          deploy_test.clj:   98
                   co.deps.routes.deploy-test/fn/fn          deploy_test.clj:  100
                            clojure.core/partial/fn                 core.clj: 2604
                             co.deps.test.utils/req                utils.clj:   20
                        bidi.vhosts/make-handler/fn               vhosts.clj:  202
                           bidi.ring/eval20052/fn/G                ring.cljc:   16
                             yada.bidi/eval27454/fn                 bidi.clj:   39
                           bidi.ring/eval20052/fn/G                ring.cljc:   16
                             yada.bidi/eval27469/fn                 bidi.clj:   75
                        yada.handler/handle-request              handler.clj:  167
yada.handler/handle-request-with-maybe-subresources              handler.clj:  115
                                 clojure.core/apply                 core.clj:  659
                                                ...
                            manifold.deferred/chain             deferred.clj:  909
                            manifold.deferred/chain             deferred.clj:  933
                                                ...
                                 clojure.core/apply                 core.clj:  652
                                 clojure.core/apply                 core.clj:  665
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  888
                                                ...
                    manifold.deferred/add-listener!             deferred.clj:  262
                                                ...
               manifold.deferred/eval5161/chain-/fn             deferred.clj:  889
                                 clojure.core/apply                 core.clj:  661
                                                ...
                  manifold.deferred/eval5161/chain-             deferred.clj:  884
                  manifold.deferred/eval5161/chain-             deferred.clj:  860
                    yada.interceptors/invoke-method         interceptors.clj:  313
                        yada.methods/eval25764/fn/G              methods.clj:   49
                          yada.methods/eval25884/fn              methods.clj:  110
                               clojure.core/ex-info                 core.clj: 4725
clojure.lang.ExceptionInfo:
    status: 406
p-himik commented 4 years ago

Copied from https://github.com/juxt/yada/issues/202#issuecomment-707049445:

[...] it seems to me that using d/error-deferred everywhere is not really needed - manifold will wrap regular exceptions for you, so you can just throw them. Replacing d/error-deferred with throw everywhere except when d/error-deferred is really needed should automatically fix all such issues.