Следующая программа при запуске из überjar завершает работу в конце только при использовании базы данных Datomic в памяти; при подключении к серверу Datomic он зависает на неопределенный срок, а не выходит из JVM:
(ns myns.example
(:use [datomic.api :only [db q] :as d])
(:gen-class))
;; WORKS: (def uri "datomic:mem://testdb")
(def uri "datomic:free://localhost:4334/testdb2")
(defn -main []
(println 1)
(when (d/create-database uri)
(d/connect uri))
(shutdown-agents)
(println 2))
Беги как:
lein uberjar && java -cp target/myns-0.1.0-SNAPSHOT-standalone.jar myns.example
Выходы:
1
2
и зависает. Он зависает только в том случае, если БД не существует при запуске программы.
Кто-нибудь знает, почему, или как исправить? Это касается как datomic-free-0.8.4020.26
, так и datomic-free-0.8.3941
.
ОБНОВЛЕНИЕ -- указанная выше программа действительно завершает работу, но занимает очень много времени (> 1 минуты). Я хотел бы знать, почему.
(d/release conn)
? - person Leon Grapenthin   schedule 12.08.2013