Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Backports:SLE-15-SP1:Update
baloo5
Baloo-engine-treat-every-non-success-code-as-a-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File Baloo-engine-treat-every-non-success-code-as-a-failure.patch of Package baloo5
From eb68430ae5f4fc4c4a2e5b1798683ff6a639ad3d Mon Sep 17 00:00:00 2001 From: Valerii Malov <jazzvoid@gmail.com> Date: Sun, 10 Mar 2019 20:19:31 +0300 Subject: Baloo engine: treat every non-success code as a failure Summary: Treating only MDB_NOTFOUND as an error leads to use of uninitliazed pointers and handle IDs in other cases (e.g. when get fails with MDB_BAD_TXN) and wreaks havoc in the application. CCBUG: 361186 CCBUG: 390823 CCBUG: 372880 CCBUG: 395888 CCBUG: 367480 CCBUG: 403720 Reviewers: #baloo, bruns, poboiko Reviewed By: #baloo, bruns Subscribers: cullmann, ngraham, bruns, kde-frameworks-devel, #baloo Tags: #frameworks, #baloo Differential Revision: https://phabricator.kde.org/D18664 --- src/engine/database.cpp | 21 +++++++------ src/engine/documentdatadb.cpp | 43 +++++++++++++++----------- src/engine/documentdb.cpp | 52 +++++++++++++++++-------------- src/engine/documentiddb.cpp | 52 +++++++++++++++++-------------- src/engine/documenttimedb.cpp | 41 +++++++++++++++---------- src/engine/documenturldb.cpp | 1 - src/engine/documenturldb.h | 7 +++-- src/engine/fsutils.cpp | 9 +++--- src/engine/idfilenamedb.cpp | 43 +++++++++++++++++--------- src/engine/idtreedb.cpp | 35 +++++++++++++-------- src/engine/mtimedb.cpp | 66 ++++++++++++++++++++++------------------ src/engine/phraseanditerator.cpp | 2 -- src/engine/positiondb.cpp | 43 ++++++++++++++------------ src/engine/postingdb.cpp | 58 +++++++++++++++++++---------------- src/engine/transaction.cpp | 60 ++++++++++++++++++++++++++++-------- src/engine/transaction.h | 8 ++--- src/file/extractorprocess.cpp | 5 +-- src/file/fileindexscheduler.cpp | 10 +++--- src/file/indexcleaner.cpp | 9 +++--- src/file/main.cpp | 1 - src/file/metadatamover.cpp | 2 +- 21 files changed, 338 insertions(+), 230 deletions(-) diff --git a/src/engine/database.cpp b/src/engine/database.cpp index b670f7a..3bc29e2 100644 --- a/src/engine/database.cpp +++ b/src/engine/database.cpp @@ -41,6 +41,8 @@ #include "idutils.h" #include "fsutils.h" +#include "enginedebug.h" + #include <QFile> #include <QFileInfo> #include <QDir> @@ -85,7 +87,7 @@ bool Database::open(OpenMode mode) if (mode == CreateDatabase) { if (!QFileInfo(dir.absolutePath()).permission(QFile::WriteOwner)) { - qCritical() << m_path << "does not have write permissions. Aborting"; + qCCritical(ENGINE) << m_path << "does not have write permissions. Aborting"; return false; } @@ -123,8 +125,9 @@ bool Database::open(OpenMode mode) } rc = mdb_reader_check(m_env, nullptr); - Q_ASSERT_X(rc == 0, "Database::open reader_check", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "Database::open reader_check" << mdb_strerror(rc); mdb_env_close(m_env); m_env = nullptr; return false; @@ -136,8 +139,8 @@ bool Database::open(OpenMode mode) MDB_txn* txn; if (mode != CreateDatabase) { int rc = mdb_txn_begin(m_env, nullptr, MDB_RDONLY, &txn); - Q_ASSERT_X(rc == 0, "Database::transaction ro begin", mdb_strerror(rc)); if (rc) { + qCWarning(ENGINE) << "Database::transaction ro begin" << mdb_strerror(rc); mdb_env_close(m_env); m_env = nullptr; return false; @@ -161,8 +164,8 @@ bool Database::open(OpenMode mode) m_dbis.mtimeDbi = MTimeDB::open(txn); - Q_ASSERT(m_dbis.isValid()); if (!m_dbis.isValid()) { + qCWarning(ENGINE) << "dbis is invalid"; mdb_txn_abort(txn); mdb_env_close(m_env); m_env = nullptr; @@ -170,16 +173,16 @@ bool Database::open(OpenMode mode) } rc = mdb_txn_commit(txn); - Q_ASSERT_X(rc == 0, "Database::transaction ro commit", mdb_strerror(rc)); if (rc) { + qCWarning(ENGINE) << "Database::transaction ro commit" << mdb_strerror(rc); mdb_env_close(m_env); m_env = nullptr; return false; } } else { int rc = mdb_txn_begin(m_env, nullptr, 0, &txn); - Q_ASSERT_X(rc == 0, "Database::transaction begin", mdb_strerror(rc)); if (rc) { + qCWarning(ENGINE) << "Database::transaction begin" << mdb_strerror(rc); mdb_env_close(m_env); m_env = nullptr; return false; @@ -203,8 +206,8 @@ bool Database::open(OpenMode mode) m_dbis.mtimeDbi = MTimeDB::create(txn); - Q_ASSERT(m_dbis.isValid()); - if (!m_dbis.isValid()) { + if (!m_dbis.isValid()) + qCWarning(ENGINE) << "dbis is invalid";{ mdb_txn_abort(txn); mdb_env_close(m_env); m_env = nullptr; @@ -212,8 +215,8 @@ bool Database::open(OpenMode mode) } rc = mdb_txn_commit(txn); - Q_ASSERT_X(rc == 0, "Database::transaction commit", mdb_strerror(rc)); if (rc) { + qCWarning(ENGINE) << "Database::transaction commit" << mdb_strerror(rc); mdb_env_close(m_env); m_env = nullptr; return false; diff --git a/src/engine/documentdatadb.cpp b/src/engine/documentdatadb.cpp index 6eddb3f..35a91f8 100644 --- a/src/engine/documentdatadb.cpp +++ b/src/engine/documentdatadb.cpp @@ -18,6 +18,7 @@ */ #include "documentdatadb.h" +#include "enginedebug.h" using namespace Baloo; @@ -35,21 +36,24 @@ DocumentDataDB::~DocumentDataDB() MDB_dbi DocumentDataDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "documentdatadb", MDB_CREATE | MDB_INTEGERKEY, &dbi); - Q_ASSERT_X(rc == 0, "DocumentUrlDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentDataDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi DocumentDataDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "documentdatadb", MDB_INTEGERKEY, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "DocumentDataDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "DocumentUrlDB::create", mdb_strerror(rc)); return dbi; } @@ -68,7 +72,9 @@ void DocumentDataDB::put(quint64 docId, const QByteArray& url) val.mv_data = static_cast<void*>(const_cast<char*>(url.constData())); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "DocumentDataDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentDataDB::put" << mdb_strerror(rc); + } } QByteArray DocumentDataDB::get(quint64 docId) @@ -79,12 +85,14 @@ QByteArray DocumentDataDB::get(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = static_cast<void*>(&docId); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentDataDB::get" << docId << mdb_strerror(rc); + } return QByteArray(); } - Q_ASSERT_X(rc == 0, "DocumentDataDB::get", mdb_strerror(rc)); return QByteArray(static_cast<char*>(val.mv_data), val.mv_size); } @@ -98,10 +106,9 @@ void DocumentDataDB::del(quint64 docId) key.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentDataDB::del" << docId << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "DocumentUrlDB::del", mdb_strerror(rc)); } bool DocumentDataDB::contains(quint64 docId) @@ -112,12 +119,14 @@ bool DocumentDataDB::contains(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = static_cast<void*>(&docId); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentDataDB::contains" << docId << mdb_strerror(rc); + } return false; } - Q_ASSERT_X(rc == 0, "DocumentDataDB::contains", mdb_strerror(rc)); return true; } @@ -133,10 +142,10 @@ QMap<quint64, QByteArray> DocumentDataDB::toTestMap() const QMap<quint64, QByteArray> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "DocumentDataDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "DocumentDataDB::toTestMap", mdb_strerror(rc)); const quint64 id = *(static_cast<quint64*>(key.mv_data)); const QByteArray ba(static_cast<char*>(val.mv_data), val.mv_size); diff --git a/src/engine/documentdb.cpp b/src/engine/documentdb.cpp index 7581901..fceda60 100644 --- a/src/engine/documentdb.cpp +++ b/src/engine/documentdb.cpp @@ -20,8 +20,7 @@ #include "documentdb.h" #include "doctermscodec.h" - -#include <QDebug> +#include "enginedebug.h" using namespace Baloo; @@ -39,21 +38,24 @@ DocumentDB::~DocumentDB() MDB_dbi DocumentDB::create(const char* name, MDB_txn* txn) { - MDB_dbi dbi; - int rc = mdb_dbi_open(txn, name, MDB_CREATE | MDB_INTEGERKEY, &dbi); - Q_ASSERT_X(rc == 0, "DocumentDB::create", mdb_strerror(rc)); + MDB_dbi dbi = 0; + const int rc = mdb_dbi_open(txn, name, MDB_CREATE | MDB_INTEGERKEY, &dbi); + if (rc) { + qCWarning(ENGINE) << "DocumentDB::create" << name << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi DocumentDB::open(const char* name, MDB_txn* txn) { - MDB_dbi dbi; - int rc = mdb_dbi_open(txn, name, MDB_INTEGERKEY, &dbi); - if (rc == MDB_NOTFOUND) { + MDB_dbi dbi = 0; + const int rc = mdb_dbi_open(txn, name, MDB_INTEGERKEY, &dbi); + if (rc) { + qCWarning(ENGINE) << "DocumentDB::open" << name << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "DocumentDB::open", mdb_strerror(rc)); return dbi; } @@ -75,7 +77,9 @@ void DocumentDB::put(quint64 docId, const QVector<QByteArray>& list) val.mv_data = static_cast<void*>(arr.data()); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "DocumentDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentDB::put" << mdb_strerror(rc); + } } QVector<QByteArray> DocumentDB::get(quint64 docId) @@ -86,19 +90,19 @@ QVector<QByteArray> DocumentDB::get(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = static_cast<void*>(&docId); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "DocumentDB::get" << docId << mdb_strerror(rc); return QVector<QByteArray>(); } - Q_ASSERT_X(rc == 0, "DocumentDB::get", mdb_strerror(rc)); QByteArray arr = QByteArray::fromRawData(static_cast<char*>(val.mv_data), val.mv_size); DocTermsCodec codec; auto result = codec.decode(arr); if (result.isEmpty()) { - qDebug() << "Document Terms DB contains corrupt data for " << docId; + qCDebug(ENGINE) << "Document Terms DB contains corrupt data for " << docId; } return result; } @@ -112,10 +116,9 @@ void DocumentDB::del(quint64 docId) key.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentDB::del" << docId << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "DocumentDB::del", mdb_strerror(rc)); } bool DocumentDB::contains(quint64 docId) @@ -128,10 +131,12 @@ bool DocumentDB::contains(quint64 docId) MDB_val val; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentDB::contains" << docId << mdb_strerror(rc); + } return false; } - Q_ASSERT_X(rc == 0, "DocumentDB::contains", mdb_strerror(rc)); return true; } @@ -140,7 +145,10 @@ uint DocumentDB::size() { MDB_stat stat; int rc = mdb_stat(m_txn, m_dbi, &stat); - Q_ASSERT_X(rc == 0, "DocumentDB::size", mdb_strerror(rc)); + if (rc) { + qCDebug(ENGINE) << "DocumentDB::size" << mdb_strerror(rc); + return 0; + } return stat.ms_entries; } @@ -156,10 +164,10 @@ QMap<quint64, QVector<QByteArray>> DocumentDB::toTestMap() const QMap<quint64, QVector<QByteArray>> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "PostingDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "PostingDB::toTestMap", mdb_strerror(rc)); const quint64 id = *(static_cast<quint64*>(key.mv_data)); const QVector<QByteArray> vec = DocTermsCodec().decode(QByteArray(static_cast<char*>(val.mv_data), val.mv_size)); diff --git a/src/engine/documentiddb.cpp b/src/engine/documentiddb.cpp index e7ce997..6e6dfe7 100644 --- a/src/engine/documentiddb.cpp +++ b/src/engine/documentiddb.cpp @@ -19,8 +19,7 @@ */ #include "documentiddb.h" - -#include <QDebug> +#include "enginedebug.h" using namespace Baloo; @@ -38,21 +37,24 @@ DocumentIdDB::~DocumentIdDB() MDB_dbi DocumentIdDB::create(const char* name, MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, name, MDB_CREATE | MDB_INTEGERKEY, &dbi); - Q_ASSERT_X(rc == 0, "DocumentIdDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentIdDB::create" << name << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi DocumentIdDB::open(const char* name, MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, name, MDB_INTEGERKEY, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "DocumentIdDB::open" << name << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "DocumentIdDB::create", mdb_strerror(rc)); return dbi; } @@ -70,7 +72,9 @@ void DocumentIdDB::put(quint64 docId) val.mv_data = nullptr; int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "DocumentIdDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentIdDB::put" << mdb_strerror(rc); + } } bool DocumentIdDB::contains(quint64 docId) @@ -81,12 +85,14 @@ bool DocumentIdDB::contains(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = static_cast<void*>(&docId); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentIdDB::contains" << docId << mdb_strerror(rc); + } return false; } - Q_ASSERT_X(rc == 0, "DocumentIdDB::contains", mdb_strerror(rc)); return true; } @@ -100,10 +106,9 @@ void DocumentIdDB::del(quint64 docId) key.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentIdDB::del" << docId << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "DocumentIdDB::del", mdb_strerror(rc)); } QVector<quint64> DocumentIdDB::fetchItems(int size) @@ -116,12 +121,12 @@ QVector<quint64> DocumentIdDB::fetchItems(int size) QVector<quint64> vec; for (int i = 0; i < size; i++) { - MDB_val key; + MDB_val key{0, nullptr}; int rc = mdb_cursor_get(cursor, &key, nullptr, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "DocumentIdDB::fetchItems" << size << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "DocumentIdDB::fetchItems", mdb_strerror(rc)); quint64 id = *(static_cast<quint64*>(key.mv_data)); vec << id; @@ -135,7 +140,10 @@ uint DocumentIdDB::size() { MDB_stat stat; int rc = mdb_stat(m_txn, m_dbi, &stat); - Q_ASSERT_X(rc == 0, "DocumentIdDB::size", mdb_strerror(rc)); + if (rc) { + qCDebug(ENGINE) << "DocumentIdDB::size" << mdb_strerror(rc); + return 0; + } return stat.ms_entries; } @@ -145,16 +153,16 @@ QVector<quint64> DocumentIdDB::toTestVector() const MDB_cursor* cursor; mdb_cursor_open(m_txn, m_dbi, &cursor); - MDB_val key = {0, nullptr}; - MDB_val val; + MDB_val key{0, nullptr}; + MDB_val val{0, nullptr}; QVector<quint64> vec; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "DocumentTimeDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "DocumentTimeDB::toTestMap", mdb_strerror(rc)); const quint64 id = *(static_cast<quint64*>(key.mv_data)); vec << id; diff --git a/src/engine/documenttimedb.cpp b/src/engine/documenttimedb.cpp index a8a5e8e..6ee9b96 100644 --- a/src/engine/documenttimedb.cpp +++ b/src/engine/documenttimedb.cpp @@ -19,6 +19,7 @@ */ #include "documenttimedb.h" +#include "enginedebug.h" using namespace Baloo; @@ -36,21 +37,24 @@ DocumentTimeDB::~DocumentTimeDB() MDB_dbi DocumentTimeDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "documenttimedb", MDB_CREATE | MDB_INTEGERKEY, &dbi); - Q_ASSERT_X(rc == 0, "DocumentTimeDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentTimeDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi DocumentTimeDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "documenttimedb", MDB_INTEGERKEY, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "DocumentTimeDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "DocumentTimeDB::create", mdb_strerror(rc)); return dbi; } @@ -68,7 +72,9 @@ void DocumentTimeDB::put(quint64 docId, const TimeInfo& info) val.mv_data = static_cast<void*>(const_cast<TimeInfo*>(&info)); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "DocumentTimeDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "DocumentTimeDB::put" << docId << mdb_strerror(rc); + } } DocumentTimeDB::TimeInfo DocumentTimeDB::get(quint64 docId) @@ -79,12 +85,14 @@ DocumentTimeDB::TimeInfo DocumentTimeDB::get(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = &docId; - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentTimeDB::get" << docId << mdb_strerror(rc); + } return TimeInfo(); } - Q_ASSERT_X(rc == 0, "DocumentTimeDB::get", mdb_strerror(rc)); return *(static_cast<TimeInfo*>(val.mv_data)); } @@ -98,10 +106,9 @@ void DocumentTimeDB::del(quint64 docId) key.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentTimeDB::del" << docId << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "DocumentTimeDB::del", mdb_strerror(rc)); } bool DocumentTimeDB::contains(quint64 docId) @@ -114,10 +121,12 @@ bool DocumentTimeDB::contains(quint64 docId) MDB_val val; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "DocumentTimeDB::contains" << docId << mdb_strerror(rc); + } return false; } - Q_ASSERT_X(rc == 0, "DocumentTimeDB::contains", mdb_strerror(rc)); return true; } @@ -133,10 +142,10 @@ QMap<quint64, DocumentTimeDB::TimeInfo> DocumentTimeDB::toTestMap() const QMap<quint64, TimeInfo> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "DocumentTimeDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "DocumentTimeDB::toTestMap", mdb_strerror(rc)); const quint64 id = *(static_cast<quint64*>(key.mv_data)); const TimeInfo ti = *(static_cast<TimeInfo*>(val.mv_data)); diff --git a/src/engine/documenturldb.cpp b/src/engine/documenturldb.cpp index fb35edd..7c3c4f9 100644 --- a/src/engine/documenturldb.cpp +++ b/src/engine/documenturldb.cpp @@ -24,7 +24,6 @@ #include <algorithm> #include <QPair> -#include <QDebug> using namespace Baloo; diff --git a/src/engine/documenturldb.h b/src/engine/documenturldb.h index eb42e1c..bd96c26 100644 --- a/src/engine/documenturldb.h +++ b/src/engine/documenturldb.h @@ -135,9 +135,10 @@ void DocumentUrlDB::replace(quint64 docId, const QByteArray& url, Functor should auto filePath = idFilenameDb.get(docId); auto fileName = QFile::decodeName(filePath.name); if (QFile::exists(fileName)) { - Q_ASSERT_X(idTreeDb.get(docId).isEmpty(), - "DocumentUrlDB::del", - "This folder still has sub-files in its cache. It cannot be deleted"); + if (!idTreeDb.get(docId).isEmpty()) { + qWarning() << "DocumentUrlDB::del" + << "This folder still has sub-files in its cache. It cannot be deleted"; + } } else { /* * FIXME: this is not an ideal solution we need to figure out how such currptions are diff --git a/src/engine/fsutils.cpp b/src/engine/fsutils.cpp index 3f42f7f..bf9bfc2 100644 --- a/src/engine/fsutils.cpp +++ b/src/engine/fsutils.cpp @@ -21,8 +21,7 @@ */ #include "fsutils.h" - -#include <QDebug> +#include "enginedebug.h" #ifdef Q_OS_LINUX #include <errno.h> @@ -54,7 +53,7 @@ void FSUtils::disableCoW(const QString &path) ulong flags = 0; const int fd = open(qPrintable(path), O_RDONLY); if (fd == -1) { - qWarning() << "Failed to open" << path << "to modify flags (" << errno << ")"; + qCWarning(ENGINE) << "Failed to open" << path << "to modify flags (" << errno << ")"; return; } @@ -62,7 +61,7 @@ void FSUtils::disableCoW(const QString &path) const int errno_ioctl = errno; // ignore ENOTTY, filesystem does not support attrs (and likely neither supports COW) if (errno_ioctl != ENOTTY) { - qWarning() << "ioctl error: failed to get file flags (" << errno_ioctl << ")"; + qCWarning(ENGINE) << "ioctl error: failed to get file flags (" << errno_ioctl << ")"; } close(fd); return; @@ -73,7 +72,7 @@ void FSUtils::disableCoW(const QString &path) const int errno_ioctl = errno; // ignore EOPNOTSUPP, returned on filesystems not supporting COW if (errno_ioctl != EOPNOTSUPP) { - qWarning() << "ioctl error: failed to set file flags (" << errno_ioctl << ")"; + qCWarning(ENGINE) << "ioctl error: failed to set file flags (" << errno_ioctl << ")"; } close(fd); return; diff --git a/src/engine/idfilenamedb.cpp b/src/engine/idfilenamedb.cpp index f03faae..91ab571 100644 --- a/src/engine/idfilenamedb.cpp +++ b/src/engine/idfilenamedb.cpp @@ -19,6 +19,7 @@ */ #include "idfilenamedb.h" +#include "enginedebug.h" using namespace Baloo; @@ -36,21 +37,24 @@ IdFilenameDB::~IdFilenameDB() MDB_dbi IdFilenameDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "idfilename", MDB_CREATE | MDB_INTEGERKEY, &dbi); - Q_ASSERT_X(rc == 0, "IdFilenameDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "IdFilenameDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi IdFilenameDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "idfilename", MDB_INTEGERKEY, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "IdFilenameDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "IdFilenameDB::open", mdb_strerror(rc)); return dbi; } @@ -73,7 +77,9 @@ void IdFilenameDB::put(quint64 docId, const FilePath& path) val.mv_data = static_cast<void*>(data.data()); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "IdFilenameDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "IdFilenameDB::put" << mdb_strerror(rc); + } } IdFilenameDB::FilePath IdFilenameDB::get(quint64 docId) @@ -86,12 +92,14 @@ IdFilenameDB::FilePath IdFilenameDB::get(quint64 docId) FilePath path; - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "IdfilenameDB::get" << docId << mdb_strerror(rc); + } return path; } - Q_ASSERT_X(rc == 0, "IdfilenameDB::get", mdb_strerror(rc)); path.parentId = static_cast<quint64*>(val.mv_data)[0]; path.name = QByteArray(static_cast<char*>(val.mv_data) + 8, val.mv_size - 8); @@ -107,12 +115,14 @@ bool IdFilenameDB::contains(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = static_cast<void*>(&docId); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "IdfilenameDB::contains" << docId << mdb_strerror(rc); + } return false; } - Q_ASSERT_X(rc == 0, "IdfilenameDB::contains", mdb_strerror(rc)); return true; } @@ -125,7 +135,9 @@ void IdFilenameDB::del(quint64 docId) key.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - Q_ASSERT_X(rc == 0, "IdfilenameDB::del", mdb_strerror(rc)); + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "IdFilenameDB::del" << mdb_strerror(rc); + } } QMap<quint64, IdFilenameDB::FilePath> IdFilenameDB::toTestMap() const @@ -139,10 +151,11 @@ QMap<quint64, IdFilenameDB::FilePath> IdFilenameDB::toTestMap() const QMap<quint64, FilePath> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "IdFilenameDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "IdFilenameDB::toTestMap", mdb_strerror(rc)); + const quint64 id = *(static_cast<quint64*>(key.mv_data)); diff --git a/src/engine/idtreedb.cpp b/src/engine/idtreedb.cpp index 5ba289d..1a2c99a 100644 --- a/src/engine/idtreedb.cpp +++ b/src/engine/idtreedb.cpp @@ -19,9 +19,9 @@ */ #include "idtreedb.h" +#include "enginedebug.h" #include "postingiterator.h" -#include <QDebug> #include <algorithm> using namespace Baloo; @@ -36,21 +36,24 @@ IdTreeDB::IdTreeDB(MDB_dbi dbi, MDB_txn* txn) MDB_dbi IdTreeDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "idtree", MDB_CREATE | MDB_INTEGERKEY, &dbi); - Q_ASSERT_X(rc == 0, "IdTreeDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "IdTreeDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi IdTreeDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "idtree", MDB_INTEGERKEY, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "IdTreeDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "IdTreeDB::open", mdb_strerror(rc)); return dbi; } @@ -69,7 +72,9 @@ void IdTreeDB::put(quint64 docId, const QVector<quint64> subDocIds) val.mv_data = static_cast<void*>(const_cast<quint64*>(subDocIds.constData())); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "IdTreeDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "IdTreeDB::put" << mdb_strerror(rc); + } } QVector<quint64> IdTreeDB::get(quint64 docId) @@ -78,12 +83,14 @@ QVector<quint64> IdTreeDB::get(quint64 docId) key.mv_size = sizeof(quint64); key.mv_data = static_cast<void*>(&docId); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "IdTreeDB::get" << docId << mdb_strerror(rc); + } return QVector<quint64>(); } - Q_ASSERT_X(rc == 0, "IdTreeeDB::get", mdb_strerror(rc)); // FIXME: This still makes a copy of the data. Perhaps we can avoid that? QVector<quint64> list(val.mv_size / sizeof(quint64)); @@ -99,7 +106,9 @@ void IdTreeDB::del(quint64 docId) key.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - Q_ASSERT_X(rc == 0, "IdTreeDB::del", mdb_strerror(rc)); + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "IdTreeDB::del" << mdb_strerror(rc); + } } // @@ -169,10 +178,10 @@ QMap<quint64, QVector<quint64>> IdTreeDB::toTestMap() const QMap<quint64, QVector<quint64>> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "PostingDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "PostingDB::toTestMap", mdb_strerror(rc)); const quint64 id = *(static_cast<quint64*>(key.mv_data)); diff --git a/src/engine/mtimedb.cpp b/src/engine/mtimedb.cpp index c5b5159..5685b85 100644 --- a/src/engine/mtimedb.cpp +++ b/src/engine/mtimedb.cpp @@ -19,6 +19,7 @@ */ #include "mtimedb.h" +#include "enginedebug.h" #include "vectorpostingiterator.h" #include <algorithm> @@ -38,21 +39,24 @@ MTimeDB::~MTimeDB() MDB_dbi MTimeDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "mtimedb", MDB_CREATE | MDB_INTEGERKEY | MDB_DUPSORT | MDB_DUPFIXED | MDB_INTEGERDUP, &dbi); - Q_ASSERT_X(rc == 0, "MTimeDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "MTimeDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi MTimeDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "mtimedb", MDB_INTEGERKEY | MDB_DUPSORT | MDB_DUPFIXED | MDB_INTEGERDUP, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "MTimeDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "MTimeDB::open", mdb_strerror(rc)); return dbi; } @@ -71,7 +75,9 @@ void MTimeDB::put(quint32 mtime, quint64 docId) val.mv_data = static_cast<void*>(&docId); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "MTimeDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "MTimeDB::put" << mdb_strerror(rc); + } } QVector<quint64> MTimeDB::get(quint32 mtime) @@ -87,23 +93,26 @@ QVector<quint64> MTimeDB::get(quint32 mtime) MDB_cursor* cursor; mdb_cursor_open(m_txn, m_dbi, &cursor); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_cursor_get(cursor, &key, &val, MDB_SET_RANGE); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "MTimeDB::get" << mtime << mdb_strerror(rc); + } mdb_cursor_close(cursor); return values; } - Q_ASSERT_X(rc == 0, "MTimeDB::get", mdb_strerror(rc)); values << *static_cast<quint64*>(val.mv_data); while (1) { rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT_DUP); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "MTimeDB::get (loop)" << mtime << mdb_strerror(rc); + } break; } - Q_ASSERT_X(rc == 0, "MTimeDB::get while", mdb_strerror(rc)); - values << *static_cast<quint64*>(val.mv_data); } @@ -127,10 +136,9 @@ void MTimeDB::del(quint32 mtime, quint64 docId) val.mv_data = static_cast<void*>(&docId); int rc = mdb_del(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "MTimeDB::del" << mtime << docId << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "DocumentDB::del", mdb_strerror(rc)); } // @@ -150,13 +158,13 @@ PostingIterator* MTimeDB::iter(quint32 mtime, MTimeDB::Comparator com) MDB_cursor* cursor; mdb_cursor_open(m_txn, m_dbi, &cursor); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_cursor_get(cursor, &key, &val, MDB_SET_RANGE); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "MTimeDB::iter" << mtime << mdb_strerror(rc); mdb_cursor_close(cursor); return nullptr; } - Q_ASSERT_X(rc == 0, "MTimeDB::iter", mdb_strerror(rc)); QVector<quint64> results; results << *static_cast<quint64*>(val.mv_data); @@ -164,10 +172,10 @@ PostingIterator* MTimeDB::iter(quint32 mtime, MTimeDB::Comparator com) if (com == GreaterEqual) { while (1) { rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "MTimeDB::iter (loop)" << mtime << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "MTimeDB::iter >=", mdb_strerror(rc)); results << *static_cast<quint64*>(val.mv_data); } @@ -175,10 +183,10 @@ PostingIterator* MTimeDB::iter(quint32 mtime, MTimeDB::Comparator com) else { while (1) { rc = mdb_cursor_get(cursor, &key, &val, MDB_PREV); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "MTimeDB::iter (loop)" << mtime << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "MTimeDB::iter >=", mdb_strerror(rc)); quint64 id = *static_cast<quint64*>(val.mv_data); results.push_front(id); @@ -203,23 +211,23 @@ PostingIterator* MTimeDB::iterRange(quint32 beginTime, quint32 endTime) MDB_cursor* cursor; mdb_cursor_open(m_txn, m_dbi, &cursor); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_cursor_get(cursor, &key, &val, MDB_SET_RANGE); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "MTimeDB::iterRange" << beginTime << endTime << mdb_strerror(rc); mdb_cursor_close(cursor); return nullptr; } - Q_ASSERT_X(rc == 0, "MTimeDB::iterRange", mdb_strerror(rc)); QVector<quint64> results; results << *static_cast<quint64*>(val.mv_data); while (1) { rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "MTimeDB::iterRange" << beginTime << endTime << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "MTimeDB::iter >=", mdb_strerror(rc)); quint32 time = *static_cast<quint32*>(key.mv_data); if (time > endTime) { @@ -245,10 +253,10 @@ QMap<quint32, quint64> MTimeDB::toTestMap() const QMap<quint32, quint64> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "MTimeDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "MTimeDB::toTestMap", mdb_strerror(rc)); const quint32 time = *(static_cast<quint32*>(key.mv_data)); const quint64 id = *(static_cast<quint64*>(val.mv_data)); diff --git a/src/engine/phraseanditerator.cpp b/src/engine/phraseanditerator.cpp index 2c20b11..ddcb397 100644 --- a/src/engine/phraseanditerator.cpp +++ b/src/engine/phraseanditerator.cpp @@ -20,8 +20,6 @@ #include "phraseanditerator.h" -#include <QDebug> - using namespace Baloo; PhraseAndIterator::PhraseAndIterator(const QVector<PostingIterator*>& iterators) diff --git a/src/engine/positiondb.cpp b/src/engine/positiondb.cpp index d104917..6b8f2b5 100644 --- a/src/engine/positiondb.cpp +++ b/src/engine/positiondb.cpp @@ -18,13 +18,12 @@ * */ +#include "enginedebug.h" #include "positiondb.h" #include "positioncodec.h" #include "positioninfo.h" #include "postingiterator.h" -#include <QDebug> - using namespace Baloo; PositionDB::PositionDB(MDB_dbi dbi, MDB_txn* txn) @@ -41,21 +40,24 @@ PositionDB::~PositionDB() MDB_dbi PositionDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "positiondb", MDB_CREATE, &dbi); - Q_ASSERT_X(rc == 0, "PositionDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "PositionDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi PositionDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "positiondb", 0, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "PositionDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "PositionDB::open", mdb_strerror(rc)); return dbi; } @@ -77,7 +79,9 @@ void PositionDB::put(const QByteArray& term, const QVector<PositionInfo>& list) val.mv_data = static_cast<void*>(data.data()); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "PositionDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "PositionDB::put" << mdb_strerror(rc); + } } QVector<PositionInfo> PositionDB::get(const QByteArray& term) @@ -88,12 +92,14 @@ QVector<PositionInfo> PositionDB::get(const QByteArray& term) key.mv_size = term.size(); key.mv_data = static_cast<void*>(const_cast<char*>(term.constData())); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "PositionDB::get" << term << mdb_strerror(rc); + } return QVector<PositionInfo>(); } - Q_ASSERT_X(rc == 0, "PositionDB::get", mdb_strerror(rc)); QByteArray data = QByteArray::fromRawData(static_cast<char*>(val.mv_data), val.mv_size); @@ -110,10 +116,9 @@ void PositionDB::del(const QByteArray& term) key.mv_data = static_cast<void*>(const_cast<char*>(term.constData())); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "PositionDB::del" << term << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "PositionDB::del", mdb_strerror(rc)); } // @@ -165,12 +170,12 @@ PostingIterator* PositionDB::iter(const QByteArray& term) key.mv_size = term.size(); key.mv_data = static_cast<void*>(const_cast<char*>(term.constData())); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "PositionDB::iter" << term << mdb_strerror(rc); return nullptr; } - Q_ASSERT_X(rc == 0, "PositionDB::iter", mdb_strerror(rc)); return new DBPositionIterator(static_cast<char*>(val.mv_data), val.mv_size); } @@ -186,10 +191,10 @@ QMap<QByteArray, QVector<PositionInfo>> PositionDB::toTestMap() const QMap<QByteArray, QVector<PositionInfo>> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "PostingDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "PostingDB::toTestMap", mdb_strerror(rc)); const QByteArray ba(static_cast<char*>(key.mv_data), key.mv_size); const QVector<PositionInfo> vinfo = PositionCodec().decode(QByteArray(static_cast<char*>(val.mv_data), val.mv_size)); diff --git a/src/engine/postingdb.cpp b/src/engine/postingdb.cpp index c965223..d16fd29 100644 --- a/src/engine/postingdb.cpp +++ b/src/engine/postingdb.cpp @@ -18,12 +18,11 @@ * */ +#include "enginedebug.h" #include "postingdb.h" #include "orpostingiterator.h" #include "postingcodec.h" -#include <QDebug> - using namespace Baloo; PostingDB::PostingDB(MDB_dbi dbi, MDB_txn* txn) @@ -40,21 +39,24 @@ PostingDB::~PostingDB() MDB_dbi PostingDB::create(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "postingdb", MDB_CREATE, &dbi); - Q_ASSERT_X(rc == 0, "PostingDB::create", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "PostingDB::create" << mdb_strerror(rc); + return 0; + } return dbi; } MDB_dbi PostingDB::open(MDB_txn* txn) { - MDB_dbi dbi; + MDB_dbi dbi = 0; int rc = mdb_dbi_open(txn, "postingdb", 0, &dbi); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCWarning(ENGINE) << "PostingDB::open" << mdb_strerror(rc); return 0; } - Q_ASSERT_X(rc == 0, "PostingDB::open", mdb_strerror(rc)); return dbi; } @@ -76,7 +78,9 @@ void PostingDB::put(const QByteArray& term, const PostingList& list) val.mv_data = static_cast<void*>(arr.data()); int rc = mdb_put(m_txn, m_dbi, &key, &val, 0); - Q_ASSERT_X(rc == 0, "PostingDB::put", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "PostingDB::put" << mdb_strerror(rc); + } } PostingList PostingDB::get(const QByteArray& term) @@ -87,12 +91,14 @@ PostingList PostingDB::get(const QByteArray& term) key.mv_size = term.size(); key.mv_data = static_cast<void*>(const_cast<char*>(term.constData())); - MDB_val val; + MDB_val val{0, nullptr}; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "PostingDB::get" << term << mdb_strerror(rc); + } return PostingList(); } - Q_ASSERT_X(rc == 0, "PostingDB::get", mdb_strerror(rc)); QByteArray arr = QByteArray::fromRawData(static_cast<char*>(val.mv_data), val.mv_size); @@ -109,10 +115,9 @@ void PostingDB::del(const QByteArray& term) key.mv_data = static_cast<void*>(const_cast<char*>(term.constData())); int rc = mdb_del(m_txn, m_dbi, &key, nullptr); - if (rc == MDB_NOTFOUND) { - return; + if (rc != 0 && rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "PostingDB::del" << term << mdb_strerror(rc); } - Q_ASSERT_X(rc == 0, "PostingDB::del", mdb_strerror(rc)); } QVector< QByteArray > PostingDB::fetchTermsStartingWith(const QByteArray& term) @@ -126,9 +131,7 @@ QVector< QByteArray > PostingDB::fetchTermsStartingWith(const QByteArray& term) QVector<QByteArray> terms; int rc = mdb_cursor_get(cursor, &key, nullptr, MDB_SET_RANGE); - while (rc != MDB_NOTFOUND) { - Q_ASSERT_X(rc == 0, "PostingDB::fetchTermsStartingWith", mdb_strerror(rc)); - + while (rc == 0) { const QByteArray arr(static_cast<char*>(key.mv_data), key.mv_size); if (!arr.startsWith(term)) { break; @@ -136,7 +139,9 @@ QVector< QByteArray > PostingDB::fetchTermsStartingWith(const QByteArray& term) terms << arr; rc = mdb_cursor_get(cursor, &key, nullptr, MDB_NEXT); } - Q_ASSERT_X(rc == 0, "PostingDB::fetchTermsStartingWith", mdb_strerror(rc)); + if (rc != MDB_NOTFOUND) { + qCDebug(ENGINE) << "PostingDB::fetchTermsStartingWith" << mdb_strerror(rc); + } mdb_cursor_close(cursor); return terms; @@ -161,10 +166,10 @@ PostingIterator* PostingDB::iter(const QByteArray& term) MDB_val val; int rc = mdb_get(m_txn, m_dbi, &key, &val); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "PostingDB::iter" << term << mdb_strerror(rc); return nullptr; } - Q_ASSERT_X(rc == 0, "PostingDB::iter", mdb_strerror(rc)); return new DBPostingIterator(val.mv_data, val.mv_size); } @@ -214,9 +219,7 @@ PostingIterator* PostingDB::iter(const QByteArray& prefix, Validator validate) MDB_val val; int rc = mdb_cursor_get(cursor, &key, &val, MDB_SET_RANGE); - while (rc != MDB_NOTFOUND) { - Q_ASSERT_X(rc == 0, "PostingDB::regexpIter", mdb_strerror(rc)); - + while (rc == 0) { const QByteArray arr(static_cast<char*>(key.mv_data), key.mv_size); if (!arr.startsWith(prefix)) { break; @@ -226,8 +229,9 @@ PostingIterator* PostingDB::iter(const QByteArray& prefix, Validator validate) } rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); } - if (rc != MDB_NOTFOUND) { - Q_ASSERT_X(rc == 0, "PostingDB::regexpIter", mdb_strerror(rc)); + + if (rc != 0 && rc != MDB_NOTFOUND) { + qCWarning(ENGINE) << "PostingDB::regexpIter" << mdb_strerror(rc); } mdb_cursor_close(cursor); @@ -279,10 +283,10 @@ QMap<QByteArray, PostingList> PostingDB::toTestMap() const QMap<QByteArray, PostingList> map; while (1) { int rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); - if (rc == MDB_NOTFOUND) { + if (rc) { + qCDebug(ENGINE) << "PostingDB::toTestMap" << mdb_strerror(rc); break; } - Q_ASSERT_X(rc == 0, "PostingDB::toTestMap", mdb_strerror(rc)); const QByteArray ba(static_cast<char*>(key.mv_data), key.mv_size); const PostingList plist = PostingCodec().decode(QByteArray(static_cast<char*>(val.mv_data), val.mv_size)); diff --git a/src/engine/transaction.cpp b/src/engine/transaction.cpp index fd4a85c..d56dbae 100644 --- a/src/engine/transaction.cpp +++ b/src/engine/transaction.cpp @@ -39,6 +39,8 @@ #include "database.h" #include "databasesize.h" +#include "enginedebug.h" + #include <QFile> #include <QFileInfo> @@ -51,7 +53,10 @@ Transaction::Transaction(const Database& db, Transaction::TransactionType type) { uint flags = type == ReadOnly ? MDB_RDONLY : 0; int rc = mdb_txn_begin(db.m_env, nullptr, flags, &m_txn); - Q_ASSERT_X(rc == 0, "Transaction", mdb_strerror(rc)); + if (rc) { + qCDebug(ENGINE) << "Transaction" << mdb_strerror(rc); + return; + } if (type == ReadWrite) { m_writeTrans = new WriteTransaction(m_dbis, m_txn); @@ -65,11 +70,12 @@ Transaction::Transaction(Database* db, Transaction::TransactionType type) Transaction::~Transaction() { - if (m_writeTrans) - qWarning() << "Closing an active WriteTransaction without calling abort/commit"; + if (m_writeTrans) { + qWarning(ENGINE) << "Closing an active WriteTransaction without calling abort/commit"; + } if (m_txn) { - abort(); + abortTransaction(); } } @@ -154,7 +160,11 @@ QByteArray Transaction::documentData(quint64 id) const bool Transaction::hasChanges() const { Q_ASSERT(m_txn); - Q_ASSERT(m_writeTrans); + if (!m_writeTrans) { + qCWarning(ENGINE) << "m_writeTrans is null"; + return false; + } + return m_writeTrans->hasChanges(); } @@ -228,7 +238,10 @@ void Transaction::addDocument(const Document& doc) { Q_ASSERT(m_txn); Q_ASSERT(doc.id() > 0); - Q_ASSERT(m_writeTrans); + if (!m_writeTrans) { + qCWarning(ENGINE) << "m_writeTrans is null"; + return; + } m_writeTrans->addDocument(doc); } @@ -237,7 +250,10 @@ void Transaction::removeDocument(quint64 id) { Q_ASSERT(m_txn); Q_ASSERT(id > 0); - Q_ASSERT(m_writeTrans); + if (!m_writeTrans) { + qCWarning(ENGINE) << "m_writeTrans is null"; + return; + } m_writeTrans->removeDocument(id); } @@ -246,7 +262,10 @@ void Transaction::removeRecursively(quint64 id) { Q_ASSERT(m_txn); Q_ASSERT(id > 0); - Q_ASSERT(m_writeTrans); + if (!m_writeTrans) { + qCWarning(ENGINE) << "m_writeTrans is null"; + return; + } m_writeTrans->removeRecursively(id); } @@ -256,7 +275,14 @@ void Transaction::replaceDocument(const Document& doc, DocumentOperations operat Q_ASSERT(m_txn); Q_ASSERT(doc.id() > 0); Q_ASSERT(m_writeTrans); - Q_ASSERT_X(hasDocument(doc.id()), "Transaction::replaceDocument", "Document does not exist"); + if (!hasDocument(doc.id())) { + qCDebug(ENGINE) << "Transaction::replaceDocument" << "Document does not exist"; + } + + if (!m_writeTrans) { + qCWarning(ENGINE) << "m_writeTrans is null"; + return; + } m_writeTrans->replaceDocument(doc, operations); } @@ -264,19 +290,24 @@ void Transaction::replaceDocument(const Document& doc, DocumentOperations operat void Transaction::commit() { Q_ASSERT(m_txn); - Q_ASSERT(m_writeTrans); + if (!m_writeTrans) { + qCWarning(ENGINE) << "m_writeTrans is null"; + return; + } m_writeTrans->commit(); delete m_writeTrans; m_writeTrans = nullptr; int rc = mdb_txn_commit(m_txn); - Q_ASSERT_X(rc == 0, "Transaction::commit", mdb_strerror(rc)); + if (rc) { + qCWarning(ENGINE) << "Transaction::commit" << mdb_strerror(rc); + } m_txn = nullptr; } -void Transaction::abort() +void Transaction::abortTransaction() { Q_ASSERT(m_txn); @@ -316,7 +347,10 @@ PostingIterator* Transaction::postingIterator(const EngineQuery& query) const if (query.op() == EngineQuery::Phrase) { const auto subQueries = query.subQueries(); for (const EngineQuery& q : subQueries) { - Q_ASSERT_X(q.leaf(), "Transaction::toPostingIterator", "Phrase queries must contain leaf queries"); + if (!q.leaf()) { + qCDebug(ENGINE) << "Transaction::toPostingIterator" << "Phrase queries must contain leaf queries"; + continue; + } vec << positionDb.iter(q.term()); } diff --git a/src/engine/transaction.h b/src/engine/transaction.h index bc56238..8874a5e 100644 --- a/src/engine/transaction.h +++ b/src/engine/transaction.h @@ -95,7 +95,7 @@ public: // Transaction handling // void commit(); - void abort(); + void abortTransaction(); bool hasChanges() const; // @@ -127,9 +127,9 @@ private: Transaction(const Transaction& rhs) = delete; const DatabaseDbis& m_dbis; - MDB_txn* m_txn; - MDB_env* m_env; - WriteTransaction* m_writeTrans; + MDB_txn *m_txn = nullptr; + MDB_env *m_env = nullptr; + WriteTransaction *m_writeTrans = nullptr; friend class DatabaseSanitizerImpl; friend class DBState; // for testing diff --git a/src/file/extractorprocess.cpp b/src/file/extractorprocess.cpp index c52c7e0..c18442f 100644 --- a/src/file/extractorprocess.cpp +++ b/src/file/extractorprocess.cpp @@ -20,8 +20,9 @@ #include "extractorprocess.h" +#include "baloodebug.h" + #include <QStandardPaths> -#include <QDebug> #include <QDataStream> using namespace Baloo; @@ -91,7 +92,7 @@ void ExtractorProcess::slotIndexingFile() break; default: - qCritical() << "Got unknown result from extractor" << command << arg; + qCritical(BALOO) << "Got unknown result from extractor" << command << arg; } } } diff --git a/src/file/fileindexscheduler.cpp b/src/file/fileindexscheduler.cpp index c6c7fc8..01ecba0 100644 --- a/src/file/fileindexscheduler.cpp +++ b/src/file/fileindexscheduler.cpp @@ -19,6 +19,7 @@ #include "fileindexscheduler.h" +#include "baloodebug.h" #include "firstrunindexer.h" #include "newfileindexer.h" #include "modifiedfileindexer.h" @@ -33,7 +34,6 @@ #include <memory> #include <QTimer> -#include <QDebug> #include <QDBusConnection> using namespace Baloo; @@ -181,9 +181,9 @@ void FileIndexScheduler::handleFileRemoved(const QString& file) void FileIndexScheduler::powerManagementStatusChanged(bool isOnBattery) { - qDebug() << "Power state changed"; + qCDebug(BALOO) << "Power state changed"; if (isOnBattery && m_indexerState == ContentIndexing) { - qDebug() << "On battery stopping content indexer"; + qCDebug(BALOO) << "On battery, stopping content indexer"; m_contentIndexer->quit(); //TODO: Maybe we can add a special state for suspended due to being on battery. m_indexerState = Idle; @@ -196,14 +196,14 @@ void FileIndexScheduler::powerManagementStatusChanged(bool isOnBattery) void FileIndexScheduler::setSuspend(bool suspend) { if (suspend) { - qDebug() << "Suspending"; + qCDebug(BALOO) << "Suspending"; if (m_indexerState == ContentIndexing) { m_contentIndexer->quit(); } m_indexerState = Suspended; Q_EMIT stateChanged(m_indexerState); } else { - qDebug() << "Resuming"; + qCDebug(BALOO) << "Resuming"; m_indexerState = Idle; // No need to emit here we'll be emitting in scheduling scheduleIndexing(); diff --git a/src/file/indexcleaner.cpp b/src/file/indexcleaner.cpp index 20eabe1..7d9cf10 100644 --- a/src/file/indexcleaner.cpp +++ b/src/file/indexcleaner.cpp @@ -24,7 +24,8 @@ #include "transaction.h" #include "idutils.h" -#include <QDebug> +#include "baloodebug.h" + #include <QFile> #include <QMimeDatabase> @@ -52,19 +53,19 @@ void IndexCleaner::run() QString url = tr.documentUrl(id); if (!QFile::exists(url)) { - qDebug() << "not exists: " << url; + qCDebug(BALOO) << "not exists: " << url; return true; } if (!m_config->shouldBeIndexed(url)) { - qDebug() << "should not be indexed: " << url; + qCDebug(BALOO) << "should not be indexed: " << url; return true; } // FIXME: This mimetype is not completely accurate! QString mimetype = mimeDb.mimeTypeForFile(url, QMimeDatabase::MatchExtension).name(); if (!m_config->shouldMimeTypeBeIndexed(mimetype)) { - qDebug() << "mimetype should not be indexed: " << url << mimetype; + qCDebug(BALOO) << "mimetype should not be indexed: " << url << mimetype; return true; } diff --git a/src/file/main.cpp b/src/file/main.cpp index 52c42e9..604dbc9 100644 --- a/src/file/main.cpp +++ b/src/file/main.cpp @@ -24,7 +24,6 @@ #include <KCrash> #include <KLocalizedString> -#include <QDebug> #include <QFileInfo> #include <iostream> diff --git a/src/file/metadatamover.cpp b/src/file/metadatamover.cpp index c5d2a89..663daff 100644 --- a/src/file/metadatamover.cpp +++ b/src/file/metadatamover.cpp @@ -191,7 +191,7 @@ void MetadataMover::watcherServiceUnregistered(const QString &serviceName) return; } - qDebug() << "MetadataMover::watcherServiceUnregistered" << itService.key(); + qCDebug(BALOO) << "MetadataMover::watcherServiceUnregistered" << itService.key(); delete itService.value(); m_watcherApplications.erase(itService); -- cgit v1.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor