From d31084db3a92a5d4e0a691f022c88c009f3d38d5 Mon Sep 17 00:00:00 2001 From: Lars Toenning Date: Tue, 12 Mar 2024 16:12:15 +0100 Subject: [PATCH] refactor: Directly use shared URL from global setup Previous we relyed on the watchdog providing a working shared URL (or empty URL if no URL was reachable). This creates some overhead and might not work in all cases because of the time between the call to getWorkingSharedUrl() and the actual network request. Further, not all calls that are fetching data from our servers were using the shared URL from the watchdog anyway. Lastly, this careful checking if the URL is available is only done for the shared URL and not for all the other URLs that are queried by swift. --- src/blackcore/application.cpp | 11 ----------- src/blackcore/application.h | 6 ------ src/blackcore/db/databasereader.cpp | 11 ++++++----- src/blackcore/db/databasereader.h | 4 ++-- src/blackcore/webdataservices.cpp | 5 ----- src/blackgui/components/dbloadoverviewcomponent.cpp | 6 ++++-- 6 files changed, 12 insertions(+), 31 deletions(-) diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index e1aeebca3..7f50ea346 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -723,17 +723,6 @@ namespace BlackCore return m_networkWatchDog && m_networkWatchDog->isSwiftDbAccessible(); } - bool CApplication::hasWorkingSharedUrl() const - { - return m_networkWatchDog && m_networkWatchDog->hasWorkingSharedUrl(); - } - - CUrl CApplication::getWorkingSharedUrl() const - { - if (!m_networkWatchDog || !this->isNetworkAccessible()) { return CUrl(); } - return m_networkWatchDog->getWorkingSharedUrl(); - } - void CApplication::exit(int retcode) { if (sApp) { instance()->gracefulShutdown(); } diff --git a/src/blackcore/application.h b/src/blackcore/application.h index 5ec39e19f..064244d79 100644 --- a/src/blackcore/application.h +++ b/src/blackcore/application.h @@ -453,12 +453,6 @@ namespace BlackCore //! \copydoc BlackCore::Db::CNetworkWatchdog::isSwiftDbAccessible bool isSwiftDbAccessible() const; - //! \copydoc BlackCore::Db::CNetworkWatchdog::hasWorkingSharedUrl - bool hasWorkingSharedUrl() const; - - //! \copydoc BlackCore::Db::CNetworkWatchdog::getWorkingSharedUrl - BlackMisc::Network::CUrl getWorkingSharedUrl() const; - //! Access to access manager //! \remark supposed to be used only in special cases const QNetworkAccessManager *getNetworkAccessManager() const { return m_accessManager; } diff --git a/src/blackcore/db/databasereader.cpp b/src/blackcore/db/databasereader.cpp index e5934c57f..f21fd371f 100644 --- a/src/blackcore/db/databasereader.cpp +++ b/src/blackcore/db/databasereader.cpp @@ -385,7 +385,7 @@ namespace BlackCore::Db CEntityFlags::Entity allEntities = entities & CEntityFlags::AllDbEntitiesNoInfoObjects; CEntityFlags::Entity currentEntity = CEntityFlags::iterateDbEntities(allEntities); - const CUrl urlSharedDbdata = CDatabaseReader::getWorkingSharedDbdataDirectoryUrl(); + const CUrl urlSharedDbdata = CDatabaseReader::getSharedDbdataDirectoryUrl(); if (urlSharedDbdata.isEmpty()) { CLogMessage(this).warning(u"No working shared URL, cannot request headers"); @@ -510,7 +510,7 @@ namespace BlackCore::Db return this->getDbServiceBaseUrl().withAppendedPath("/service"); case CDbFlags::SharedInfoOnly: case CDbFlags::Shared: - return CDatabaseReader::getWorkingSharedDbdataDirectoryUrl(); + return CDatabaseReader::getSharedDbdataDirectoryUrl(); default: qFatal("Wrong mode"); break; @@ -731,10 +731,11 @@ namespace BlackCore::Db return dbUrl; } - CUrl CDatabaseReader::getWorkingSharedDbdataDirectoryUrl() + CUrl CDatabaseReader::getSharedDbdataDirectoryUrl() { - const CUrl sharedUrl(sApp->getWorkingSharedUrl()); - return CGlobalSetup::buildDbDataDirectoryUrl(sharedUrl); + const CUrlList sharedUrls = sApp->getGlobalSetup().getSwiftSharedUrls(); + Q_ASSERT_X(!sharedUrls.empty(), Q_FUNC_INFO, "Need at least one shared URL"); + return CGlobalSetup::buildDbDataDirectoryUrl(sharedUrls[0]); } void CDatabaseReader::cacheHasChanged(CEntityFlags::Entity entities) diff --git a/src/blackcore/db/databasereader.h b/src/blackcore/db/databasereader.h index 24ea400ac..4ea7538cc 100644 --- a/src/blackcore/db/databasereader.h +++ b/src/blackcore/db/databasereader.h @@ -347,8 +347,8 @@ namespace BlackCore::Db //! DB base URL static const BlackMisc::Network::CUrl &getDbUrl(); - //! Working shared "dbdata" directory URL - static BlackMisc::Network::CUrl getWorkingSharedDbdataDirectoryUrl(); + //! shared "dbdata" directory URL + static BlackMisc::Network::CUrl getSharedDbdataDirectoryUrl(); //! File name for given mode, either php service or shared file name static QString fileNameForMode(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode); diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index a9aeda397..6836c286f 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -332,11 +332,6 @@ namespace BlackCore { if (m_shuttingDown) { return CEntityFlags::NoEntity; } if (!sApp || sApp->isShuttingDown()) { return CEntityFlags::NoEntity; } - if (!sApp->hasWorkingSharedUrl()) - { - CLogMessage(this).warning(u"Not triggering load of '%1' because no working shared URL") << CEntityFlags::flagToString(whatToRead); - return CEntityFlags::NoEntity; - } CEntityFlags::Entity triggeredRead = CEntityFlags::NoEntity; this->triggerReadOfSharedInfoObjects(); // trigger reload of info objects (for shared) diff --git a/src/blackgui/components/dbloadoverviewcomponent.cpp b/src/blackgui/components/dbloadoverviewcomponent.cpp index 4fa92fbce..5871f5fb6 100644 --- a/src/blackgui/components/dbloadoverviewcomponent.cpp +++ b/src/blackgui/components/dbloadoverviewcomponent.cpp @@ -246,9 +246,11 @@ namespace BlackGui::Components const QString sharedUrlTable = toHtmTable(values, 2); ui->lbl_SharedUrls->setText(sharedUrlTable); ui->lbl_SharedUrls->setMinimumHeight(10 + (18 * sharedUrls.size())); - const QString currentlyUsedSharedUrl = sGui->getWorkingSharedUrl().toQString(); + + const CUrlList urls = sGui->getGlobalSetup().getSwiftSharedUrls(); + Q_ASSERT_X(!urls.empty(), Q_FUNC_INFO, "Need at least one shared URL"); ui->lbl_SharedUrls->setToolTip( - currentlyUsedSharedUrl.isEmpty() ? "No shared URL" : "currently used: " + currentlyUsedSharedUrl); + urls[0].isEmpty() ? "No shared URL" : "currently used: " + urls[0].toQString()); m_sharedLastCheck = QDateTime::currentMSecsSinceEpoch(); m_sharedValueCheckInProgress = false;