【发布时间】:2013-08-12 03:32:59
【问题描述】:
以下程序从 ü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。
UPDATE -- 上述程序确实终止了,但需要很长时间(> 1 分钟)。我想知道为什么。
【问题讨论】:
-
你试过
(d/release conn)吗? -
试过了,没有明显区别——但我在这个过程中了解到,上面的程序最终会终止,只需要一分钟多一点(!!!)。