次のプログラムは、ü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
そしてハングします。プログラムの起動時にDBが存在しない場合にのみハングします。
誰でも理由、または修正方法を知っていますか? これは と の両方datomic-free-0.8.4020.26
にありdatomic-free-0.8.3941
ます。
更新-- 上記のプログラムは実際に終了しますが、非常に長い時間がかかります (> 1 分)。理由を知りたいです。