lein REPL server launch timed out

孤街醉人 提交于 2019-12-05 10:14:49

问题


in a liberator based clojure project we are using datomic as DB. After migrating our local dev DB to a S3 hosted one and adding the needed dependencies on our project.clj we cannot launch the REPL but the Liberator stack runs fine through lein run

My guess is that the DB connection is messing things up, so, the question is, how can I somehow "debug" or figure out what's the reason of this lein repl timeout?

My project.clj

(defproject myproject "0.1.0-SNAPSHOT"
  :main myproject.core
  :jvm-opts ["-Xmx1G"]
  :datomic {:schemas ["resources" ["myproject-schema.edn" ]]}
  :plugins [[lein-ring "0.8.10"]]
  ; cp bin/transactor config/samples/free-transactor-template.properties resources/transactor.properties
  :profiles {:dev
             {:datomic {
                        ; :config resources/transactor.properties
                        ; :db-uri "datomic:free://127.0.0.1:4334/myproject"}
                        :db-uri "datomic:ddb://us-east-1/datomica/myproject"}

 :dependencies [[ring-mock "0.1.5"]
                             [midje "1.5.1"]
                             ]
              }
             }
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [com.datomic/datomic-pro "0.9.4556"]
                 ; [com.datomic/datomic-free "0.9.4470"]
                 [com.cemerick/friend "0.2.0"]
                 [liberator "0.10.0"]
                 [compojure "1.1.5"]
                 [http-kit "2.1.13"]
                 [cheshire "5.1.1"]
                 [ring/ring-jetty-adapter "1.1.0"]
                 [ring/ring-devel "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [url62 "1.0.0-SNAPSHOT"]
                 [clj-http "0.7.8"]
                 [org.clojars.nathell/clojure-contrib "1.2.0"]
                 [com.taoensso/timbre "3.0.0-RC4"]
                 [clj-aws-s3 "0.3.8"]
                 [image-resizer "0.1.5"]
                 [pandect "0.3.1"]
                 [base64-clj "0.1.1"]
                 ]
    :ring {
           :handler myproject.core
           }
)

My profiles.clj

cat ~/.lein/profiles.clj                                                           
{:user {:dependencies [[slamhound "1.5.0"]]
        :aliases {"slamhound"["run" "-m" "slam.hound"]}
        :plugins [[lein-datomic "0.2.0"]
                  [lein-midje "3.0.0"]
                                  [lein-html5-docs "2.0.0"]
                                  [lein-pprint "1.1.2-SNAPSHOT"]]
                ; :datomic {:install-location "/opt/datomic-free"}
                :datomic {:install-location "/opt/datomic-pro/"}
                }
}%      

My .zshrc

export CLASSPATH=$CLASSPATH:/home/user:/opt/datomic-pro:.

My env

Leiningen 2.3.3 on Java 1.7.0_25 OpenJDK 64-Bit Server VM
Linux 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

回答1:


It can sometimes take a while for all the ducks to be in order. Specify :repl-options in your project.clj file with a longer time-out like this:

:repl-options {
             ;; If nREPL takes too long to load it may timeout,
             ;; increase this to wait longer before timing out.
             ;; Defaults to 30000 (30 seconds)
             :timeout 120000
             }

Hopefully that should do the trick.




回答2:


The reason was the multiple redefinition and evaluation of the Datomic connection among several files

(def conn (d/connect DATOMIC_URI))

The solution to this topic has been already discussed at How to deal with a variable in a library that needs to be set outside of it?




回答3:


set timeout value in field :repl-options in project.clj,the default is 30000(30s). for example :

:repl-options{:timeout 120000}


来源:https://stackoverflow.com/questions/22736952/lein-repl-server-launch-timed-out

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!