Handle connection exceptions properly in TreeOperations::getDatabases

This commit is contained in:
Igor Malinovskiy
2018-09-04 17:24:05 +03:00
parent a1d2ba8193
commit 2d12aa6096
2 changed files with 14 additions and 3 deletions
+5 -1
View File
@@ -27,7 +27,11 @@ void TreeOperations::getDatabases(std::function<void (RedisClient::DatabaseList)
bool connected = m_connection->isConnected();
if (connected) {
m_connection->refreshServerInfo();
try {
m_connection->refreshServerInfo();
} catch (const RedisClient::Connection::Exception& e) {
throw ConnectionsTree::Operations::Exception(QObject::tr("Connection error: ") + QString(e.what()));
}
} else {
try {
connected = m_connection->connect(true);
@@ -123,12 +123,19 @@ void DatabaseItem::loadKeys(std::function<void ()> callback)
return;
}
m_operations->getDatabases([this](QMap<int, int> dbMapping){
std::function<void(RedisClient::DatabaseList)> dbLoadCallback = [this](QMap<int, int> dbMapping){
if (dbMapping.contains(m_dbIndex)) {
m_keysCount = dbMapping[m_dbIndex];
emit m_model.itemChanged(getSelf());
}
});
};
try {
m_operations->getDatabases(dbLoadCallback);
} catch (const ConnectionsTree::Operations::Exception& e) {
unlock();
emit m_model.error(QObject::tr("Cannot load databases:\n\n") + QString(e.what()));
}
m_operations->loadNamespaceItems(qSharedPointerDynamicCast<AbstractNamespaceItem>(self),
filter, [this, callback](const QString& err) {