1

次のプログラムは、ü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 分)。理由を知りたいです。

4

2 に答える 2