2017-09-15 160 views
3

我对AWS,一段时间运行后我的交易者(EC2)和Datomic(DynamoDB)已经发布了,我开始变得以下错误,我不明白什么::db.error /连接释放连接已在Datomic

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

而且,我跑我的应用程序一个月前,但当时没有得到这个错误。

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

回答

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

您是否曾经在数据库上调用release?这是我认为可能导致这种情况的一件事,一旦你调用release,你就不能在应用程序的整个生命周期中再次使用任何Datomic连接。连接非常轻量级,所以很少有理由调用这个函数。

+0

不,我没有,部署我的应用程序AWS后,我几个小时后出现这个错误是奇怪的。如果我检查这个异常,并重新建立连接(d/connect“my-db-uri”)它会工作吗? –

+0

另外,我发现如果交易者终止并创建新交易者,它会删除DynamoDB上的我的表:/为什么发生这种情况,有什么想法? –