Skip to content

Commit

Permalink
kde-frameworks/baloo: Fix index corruption, fix error w/o index
Browse files Browse the repository at this point in the history
a) [BasicIndexingJob] Strip trailing slash from folders
Upstream commit 9b61371fdefbd538938f20cdc87eed03d170fa5b
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=430273
Thanks-to: josef64 (in #gentoo-kde IRC)

b) Avoid errors for application startup if no baloo index was ever created
Upstream commit d102b01ee59d93de3fe18c12364ea69a85ea723f

Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <[email protected]>
  • Loading branch information
a17r committed Jan 6, 2021
1 parent 1c8e431 commit b3a2c01
Show file tree
Hide file tree
Showing 3 changed files with 151 additions and 0 deletions.
40 changes: 40 additions & 0 deletions kde-frameworks/baloo/baloo-5.77.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

ECM_TEST="forceoptional"
PVCUT=$(ver_cut 1-2)
QTMIN=5.15.1
VIRTUALX_REQUIRED="test"
inherit ecm kde.org

DESCRIPTION="Framework for searching and managing metadata"
LICENSE="LGPL-2+"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
IUSE=""

DEPEND="
>=dev-db/lmdb-0.9.17
>=dev-qt/qtdbus-${QTMIN}:5
>=dev-qt/qtdeclarative-${QTMIN}:5
>=dev-qt/qtgui-${QTMIN}:5
>=dev-qt/qtwidgets-${QTMIN}:5
=kde-frameworks/kconfig-${PVCUT}*:5
=kde-frameworks/kcoreaddons-${PVCUT}*:5
=kde-frameworks/kcrash-${PVCUT}*:5
=kde-frameworks/kdbusaddons-${PVCUT}*:5
=kde-frameworks/kfilemetadata-${PVCUT}*:5
=kde-frameworks/ki18n-${PVCUT}*:5
=kde-frameworks/kidletime-${PVCUT}*:5
=kde-frameworks/kio-${PVCUT}*:5
=kde-frameworks/solid-${PVCUT}*:5
"
RDEPEND="${DEPEND}"

RESTRICT+=" test" # bug 624250

PATCHES=(
"${FILESDIR}/${P}-strip-trailing-slash.patch"
"${FILESDIR}/${P}-no-error-w-o-index.patch"
)
77 changes: 77 additions & 0 deletions kde-frameworks/baloo/files/baloo-5.77.0-no-error-w-o-index.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
From d102b01ee59d93de3fe18c12364ea69a85ea723f Mon Sep 17 00:00:00 2001
From: Christoph Cullmann <[email protected]>
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

34 changes: 34 additions & 0 deletions kde-frameworks/baloo/files/baloo-5.77.0-strip-trailing-slash.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
From 9b61371fdefbd538938f20cdc87eed03d170fa5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]>
Date: Sat, 12 Dec 2020 19:01:45 +0100
Subject: [PATCH] [BasicIndexingJob] Strip trailing slash from folders

If BasicIndexingJob is called with a path with a trailing slash, the
search for the last slash (separating name from parent path) goes wrong.

This was wrong already earlier, but with commit 47ebc15844f6b8a8
("[Document] Add parent document ID and populate it") this caused
document and parent id to be the same.

CCBUG: 430273
---
src/file/basicindexingjob.cpp | 3 +++
1 file changed, 3 insertions(+)

diff --git a/src/file/basicindexingjob.cpp b/src/file/basicindexingjob.cpp
index e00c6a2b..c0f18ddd 100644
--- a/src/file/basicindexingjob.cpp
+++ b/src/file/basicindexingjob.cpp
@@ -23,6 +23,9 @@ BasicIndexingJob::BasicIndexingJob(const QString& filePath, const QString& mimet
, m_mimetype(mimetype)
, m_indexingLevel(level)
{
+ if (m_filePath.endsWith(QChar('/'))) {
+ m_filePath.chop(1);
+ }
}

namespace {
--
GitLab

0 comments on commit b3a2c01

Please sign in to comment.