From 026afeb88587af8005cd764ee34bbc73fa341a1f Mon Sep 17 00:00:00 2001 From: Zach H Date: Sun, 29 Dec 2024 23:35:32 -0500 Subject: [PATCH] Support auto-reconnect for Servatrice (#5391) - Fix #5022 --- .../src/servatrice_database_interface.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/servatrice/src/servatrice_database_interface.cpp b/servatrice/src/servatrice_database_interface.cpp index 38d8128c9..913b4d962 100644 --- a/servatrice/src/servatrice_database_interface.cpp +++ b/servatrice/src/servatrice_database_interface.cpp @@ -103,12 +103,25 @@ bool Servatrice_DatabaseInterface::openDatabase() bool Servatrice_DatabaseInterface::checkSql() { - if (!sqlDatabase.isValid()) + if (!sqlDatabase.isValid()) { return false; + } auto query = QSqlQuery(sqlDatabase); - if (query.exec("select 1") && query.isActive()) + if (query.exec("select 1") && query.isActive()) { return openDatabase(); + } + + if (query.lastError().isValid()) { + const auto &poolStr = instanceId == -1 ? QString("main") : QString("pool %1").arg(instanceId); + qCritical() << QString("[%1] Error executing query: %2, resetting connection") + .arg(poolStr) + .arg(query.lastError().text()); + + sqlDatabase.close(); + return openDatabase(); + } + return true; }