From d102b01ee59d93de3fe18c12364ea69a85ea723f Mon Sep 17 00:00:00 2001 From: Christoph Cullmann <cullmann@kde.org> Date: Thu, 31 Dec 2020 15:44:40 +0000 Subject: [PATCH] avoid errors for application startup if no baloo index was ever created use case: * a KDE application started e.g. in an non-KDE Plasma environment * a KDE application started with baloo indexing disabled you normally will get: kf.kio.slaves.tags: tag fetch failed: "Failed to open the database" kf.kio.slaves.tags: "tags:/" list() invalid url Now this is not issued if no index database exist. --- src/engine/database.cpp | 6 ++++++ src/engine/database.h | 7 +++++++ src/lib/taglistjob.cpp | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/src/engine/database.cpp b/src/engine/database.cpp index 427210d0..ac93426c 100644 --- a/src/engine/database.cpp +++ b/src/engine/database.cpp @@ -247,3 +247,9 @@ QString Database::path() const QMutexLocker locker(&m_mutex); return m_path; } + +bool Database::isAvailable() const +{ + QMutexLocker locker(&m_mutex); + return QFileInfo::exists(m_path + QStringLiteral("/index")); +} diff --git a/src/engine/database.h b/src/engine/database.h index 0f43b623..26d21101 100644 --- a/src/engine/database.h +++ b/src/engine/database.h @@ -73,6 +73,13 @@ public: */ QString path() const; + /** + * Is the database available for use? + * For example if indexing is disabled or the indexer did never run this is false. + * @return database available + */ + bool isAvailable() const; + private: /** * serialize access, as open might be called from multiple threads diff --git a/src/lib/taglistjob.cpp b/src/lib/taglistjob.cpp index cea57889..58945cc7 100644 --- a/src/lib/taglistjob.cpp +++ b/src/lib/taglistjob.cpp @@ -33,7 +33,14 @@ TagListJob::~TagListJob() void TagListJob::start() { Database *db = globalDatabaseInstance(); + if (!db->open(Database::ReadOnlyDatabase)) { + // if we have no index, we have no tags + if (!db->isAvailable()) { + emitResult(); + return; + } + setError(UserDefinedError); setErrorText(QStringLiteral("Failed to open the database")); emitResult(); -- GitLab