2017-09-15 163 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上的我的表:/爲什麼發生這種情況,有什麼想法? –