Reconnect to Gerrit database if needed
* jeepyb/gerritdb.py(connect): If the database connection is being
reused for a connect call, issue a ping and pass the reconnect
option so that a reconnection attempt will be made in the event the
socket has timed out or otherwise disconnected. Note that this only
works for the MySQLdb driver, so a different solution will likely be
needed for psycopg2. Alternatively, switching to an ORM like
sqlalchemy would get us this for free, but is a more involved
change.
Change-Id: I591d40998e208f18ac5c43bafd7bccb98be6a9c8
Closes-Story: #2000017
diff --git a/jeepyb/gerritdb.py b/jeepyb/gerritdb.py
index 8343b8e..767991f 100644
--- a/jeepyb/gerritdb.py
+++ b/jeepyb/gerritdb.py
@@ -60,4 +60,11 @@
import psycopg2
db_connection = psycopg2.connect(
host=DB_HOST, user=DB_USER, password=DB_PASS, database=DB_DB)
+ else:
+ try:
+ # Make sure the database is responding and reconnect if not
+ db_connection.ping(True)
+ except AttributeError:
+ # This database driver lacks a ping implementation
+ pass
return db_connection