:db.error / connection-release连接已在Datomic中发布

时间:2017-09-15 08:06:06

标签: clojure datomic

我在 AWS 上运行我的Transactor( EC2 )和Datomic( DynamoDB ),过了一段时间,我开始获取以下内容错误,我什么都不懂:

:db.error/connection-released The connection has been released.
....

此外,我之前运行了我的应用程序一个月,但当时没有收到此错误。

任何想法?如果这种情况经常发生,我应该在应用代码中重新建立数据库连接吗?

2 个答案:

答案 0 :(得分:2)

您是否曾在数据库上调用release?我认为这可能导致这一点,一旦你致电发布,你就无法在应用程序的生命周期中再次使用任何Datomic连接。连接非常轻量级,因此很少有理由调用此函数。

答案 1 :(得分:2)

事实证明,当交易者实例重新启动时,我得到了这个错误,所以我发现解决这个问题的方法是代码:

(defn establish-conn
  []
  (try
      (d/create-database (conf/get :db-uri))
      (reset! conn (d/connect (conf/get :db-uri)))
    (catch Throwable t
      (println "Could not establish db conn." t))))

(defn fix-if-conn-ex
  ;;getting exception's error message
  [err-msg]
  (when (str/includes? err-msg ":db.error/connection-released")
    (db/establish-conn)))