2017-09-15 3 views
3

Je suis en mon Transactor (EC2) et Datomic (DynamoDB) sur AWS et après un certain temps, j'ai commencé à la suite erreur que je ne comprenais rien:: db.error/connexion libéré la connexion a été libéré dans Datomic

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

aussi, je courais mon application pendant un mois avant mais n'a pas obtenu cette erreur à l'époque.

Des idées? Si cela se produit régulièrement, dois-je rétablir la connexion à la base de données dans le code de l'application?

Répondre

2

Il est avéré que lorsque l'instance de transactor redémarrages je reçois cette erreur donc j'ai trouvé un travail autour de ce problème ici est le code:

(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

Appellez-vous le release sur la BD? C'est une chose que je pense pourrait causer, une fois que vous appelez release, vous ne pouvez plus utiliser de connexions Datomic pour la durée de vie de l'application. Les connexions sont vraiment légères, il y a donc très rarement une raison d'appeler cette fonction.

+0

non, je ne l'ai pas, après avoir déployé mon application à aws I J'ai eu cette erreur quelques heures plus tard qui était bizarre.Si je vérifie cette exception, et rétablis la connexion (d/connecte "my-db-uri") cela fonctionnerait-il? –

+0

J'ai aussi découvert que si transactor se termine et que j'en crée un nouveau, il supprime ma table sur DynamoDB:/pourquoi cela arrive-t-il, des idées? –