2017-09-15 3 views
3

Ich bin mit meiner Transactor (EC2) und Datomic (DynamoDB) auf AWS und nach einer Weile begann ich folgendes bekommen Fehler, der ich nichts verstanden habe:: db.error/connection-Freigabe, die Verbindung wird in Datomic veröffentlicht

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

auch ich war vor meiner App für einen Monat läuft, aber zu der Zeit nicht diesen Fehler.

Irgendwelche Ideen? Wenn dies regelmäßig passiert, sollte ich die Datenbankverbindung im App-Code wiederherstellen?

Antwort

2

Es stellte sich heraus, dass, wenn Transaktor Instanz rebootet ich diesen Fehler bekommen, damit ich den Code eine Arbeit um für dieses Problem ist hier gefunden:

(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

Rufen Sie jemals release auf der DB? Das ist eine Sache, die, denke ich, dazu führen könnte, dass Sie, sobald Sie die Freigabe erhalten, keine Datomic-Verbindungen mehr für die Lebensdauer der App verwenden können. Verbindungen sind wirklich leicht, daher gibt es kaum einen Grund, diese Funktion aufzurufen.

+0

nein, ich nicht tat, nach meiner App aws Bereitstellung von I Habe diesen Fehler einige Stunden später bekommen, was seltsam war. Wenn ich diese Ausnahme überprüfe und die Verbindung wieder herstelle (d/connect "my-db-uri"), würde es funktionieren? –

+0

Auch ich fand heraus, dass, wenn Transaktor beendet und ich ein neues erstelle, löscht er meine Tabelle in DynamoDB:/Warum passiert das, irgendwelche Ideen? –