File Baloo-engine-treat-every-non-success-code-as-a-failure.patch of Package baloo5.11795
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