:db.error/connection-released 连接已在 Datomic 中释放

:db.error/connection-released the connection has been released in Datomic

我是 运行 我的 Transactor(EC2) 和 Datomic(DynamoDB) 在 AWS 上 过了一会儿,我开始收到以下错误,我什么都不懂:

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

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

有什么想法吗?如果这种情况经常发生,我是否应该在应用程序代码中重新建立数据库连接?

您是否曾在 DB 上调用 release?这是我认为可能导致此问题的一件事,一旦您调用发布,您就无法在应用程序的生命周期内再次使用任何 Datomic 连接。连接确实是轻量级的,所以很少有理由调用这个函数。

事实证明,当事务处理程序实例 重新启动时 我得到了那个错误,所以我找到了解决这个问题的方法,代码是:

(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)))