From: egs-me Date: Thu, 23 Apr 2015 14:12:40 +0000 (+0200) Subject: Merge pull request #123 from mamarley/initdbfix X-Git-Tag: travis-deploy-test~569 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=8e2f578b3d83d2dd7b6f2ea64d350693073ffed1;hp=9e7ee3a501d5dce09982d92102b7f1873cd0d3db Merge pull request #123 from mamarley/initdbfix Execute initDbSession() on DB reconnects --- diff --git a/src/core/abstractsqlstorage.cpp b/src/core/abstractsqlstorage.cpp index cb074547..dce39cb2 100644 --- a/src/core/abstractsqlstorage.cpp +++ b/src/core/abstractsqlstorage.cpp @@ -53,7 +53,14 @@ QSqlDatabase AbstractSqlStorage::logDb() if (!_connectionPool.contains(QThread::currentThread())) addConnectionToPool(); - return QSqlDatabase::database(_connectionPool[QThread::currentThread()]->name()); + QSqlDatabase db = QSqlDatabase::database(_connectionPool[QThread::currentThread()]->name(),false); + + if (!db.isOpen()) { + qWarning() << "Database connection" << displayName() << "for thread" << QThread::currentThread() << "was lost, attempting to reconnect..."; + dbConnect(db); + } + + return db; } @@ -90,6 +97,12 @@ void AbstractSqlStorage::addConnectionToPool() db.setPassword(password()); } + dbConnect(db); +} + + +void AbstractSqlStorage::dbConnect(QSqlDatabase &db) +{ if (!db.open()) { quWarning() << "Unable to open database" << displayName() << "for thread" << QThread::currentThread(); quWarning() << "-" << db.lastError().text(); diff --git a/src/core/abstractsqlstorage.h b/src/core/abstractsqlstorage.h index 90a8aa98..c39e826b 100644 --- a/src/core/abstractsqlstorage.h +++ b/src/core/abstractsqlstorage.h @@ -87,6 +87,7 @@ private slots: private: void addConnectionToPool(); + void dbConnect(QSqlDatabase &db); int _schemaVersion; bool _debug;