From 26e3abb9d71efd49b32a60ccb872e554a272cf69 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20K=C3=A1cha?= <ph@cesnet.cz>
Date: Fri, 23 Jun 2017 15:56:59 +0200
Subject: [PATCH] (Hopefully) more robust database reconnection
---
warden3/warden_server/warden_server.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/warden3/warden_server/warden_server.py b/warden3/warden_server/warden_server.py
index fa279b7..bed5b60 100755
--- a/warden3/warden_server/warden_server.py
+++ b/warden3/warden_server/warden_server.py
@@ -527,6 +527,8 @@ class MySQL(ObjectBase):
crs = kwargs.pop("crs", None)
while True:
try:
+ if self.con is None:
+ self.connect()
if crs is None:
crs = self.con.cursor()
self.log.debug("execute: %s %s" % (args, kwargs))
@@ -540,9 +542,16 @@ class MySQL(ObjectBase):
self.log.info("execute: Database down, trying to reconnect (%d attempts left)..." % countdown)
if countdown<self.retry_count:
sleep(self.retry_pause) # no need to melt down server on longer outage
- self.close()
- self.connect()
+ try:
+ crs.close()
+ except Exception:
+ pass
+ try:
+ self.close()
+ except Exception:
+ pass
crs = None
+ self.con = None
countdown -= 1
--
GitLab