diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-07 22:23:49 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-07 22:23:49 +0200 |
commit | da2b049e248c1ad7efeb53685158a205335e4e36 (patch) | |
tree | 1e7e5e940e9b760b2108081b1d2f3879cebdb0ff /common/storage_lmdb.cpp | |
parent | 9bcb822963fc96c94dbe7dcc4134dcd2dac454ff (diff) | |
download | sink-da2b049e248c1ad7efeb53685158a205335e4e36.tar.gz sink-da2b049e248c1ad7efeb53685158a205335e4e36.zip |
A new debug system.
Instead of a single #define as debug area the new system allows for an
identifier for each debug message with the structure component.area.
The component is a dot separated identifier of the runtime component,
such as the process or the plugin.
The area is the code component, and can be as such defined at
compiletime.
The idea of this system is that it becomes possible to i.e. look at the
output of all messages in the query subsystem of a specific resource
(something that happens in the client process, but in the
resource-specific subcomponent).
The new macros are supposed to be less likely to clash with other names,
hence the new names.
Diffstat (limited to 'common/storage_lmdb.cpp')
-rw-r--r-- | common/storage_lmdb.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp index 352e250..79f4465 100644 --- a/common/storage_lmdb.cpp +++ b/common/storage_lmdb.cpp | |||
@@ -34,10 +34,8 @@ | |||
34 | #include <lmdb.h> | 34 | #include <lmdb.h> |
35 | #include "log.h" | 35 | #include "log.h" |
36 | 36 | ||
37 | #undef Trace | 37 | SINK_DEBUG_AREA("storage") |
38 | #define Trace() Trace_area("storage." + d->storageRoot.toLatin1() + '/' + d->name.toLatin1()) | 38 | // SINK_DEBUG_COMPONENT(d->storageRoot.toLatin1() + '/' + d->name.toLatin1()) |
39 | #undef Warning | ||
40 | #define Warning() Warning_area("storage") | ||
41 | 39 | ||
42 | namespace Sink { | 40 | namespace Sink { |
43 | 41 | ||
@@ -354,7 +352,7 @@ qint64 Storage::NamedDatabase::getSize() | |||
354 | MDB_stat stat; | 352 | MDB_stat stat; |
355 | rc = mdb_stat(d->transaction, d->dbi, &stat); | 353 | rc = mdb_stat(d->transaction, d->dbi, &stat); |
356 | if (rc) { | 354 | if (rc) { |
357 | Warning() << "Something went wrong " << QByteArray(mdb_strerror(rc)); | 355 | SinkWarning() << "Something went wrong " << QByteArray(mdb_strerror(rc)); |
358 | } | 356 | } |
359 | // std::cout << "overflow_pages: " << stat.ms_overflow_pages << std::endl; | 357 | // std::cout << "overflow_pages: " << stat.ms_overflow_pages << std::endl; |
360 | // std::cout << "page size: " << stat.ms_psize << std::endl; | 358 | // std::cout << "page size: " << stat.ms_psize << std::endl; |
@@ -482,7 +480,7 @@ static bool ensureCorrectDb(Storage::NamedDatabase &database, const QByteArray & | |||
482 | bool openedTheWrongDatabase = false; | 480 | bool openedTheWrongDatabase = false; |
483 | auto count = database.scan("__internal_dbname", [db, &openedTheWrongDatabase](const QByteArray &key, const QByteArray &value) ->bool { | 481 | auto count = database.scan("__internal_dbname", [db, &openedTheWrongDatabase](const QByteArray &key, const QByteArray &value) ->bool { |
484 | if (value != db) { | 482 | if (value != db) { |
485 | Warning() << "Opened the wrong database, got " << value << " instead of " << db; | 483 | SinkWarning() << "Opened the wrong database, got " << value << " instead of " << db; |
486 | openedTheWrongDatabase = true; | 484 | openedTheWrongDatabase = true; |
487 | } | 485 | } |
488 | return false; | 486 | return false; |
@@ -505,7 +503,7 @@ bool Storage::Transaction::validateNamedDatabases() | |||
505 | for (const auto &dbName : databases) { | 503 | for (const auto &dbName : databases) { |
506 | auto db = openDatabase(dbName); | 504 | auto db = openDatabase(dbName); |
507 | if (!db) { | 505 | if (!db) { |
508 | Warning() << "Failed to open the database: " << dbName; | 506 | SinkWarning() << "Failed to open the database: " << dbName; |
509 | return false; | 507 | return false; |
510 | } | 508 | } |
511 | } | 509 | } |
@@ -527,7 +525,7 @@ Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, | |||
527 | } | 525 | } |
528 | auto database = Storage::NamedDatabase(p); | 526 | auto database = Storage::NamedDatabase(p); |
529 | if (!ensureCorrectDb(database, db, d->requestedRead)) { | 527 | if (!ensureCorrectDb(database, db, d->requestedRead)) { |
530 | Warning() << "Failed to open the database" << db; | 528 | SinkWarning() << "Failed to open the database" << db; |
531 | return Storage::NamedDatabase(); | 529 | return Storage::NamedDatabase(); |
532 | } | 530 | } |
533 | return database; | 531 | return database; |
@@ -536,7 +534,7 @@ Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, | |||
536 | QList<QByteArray> Storage::Transaction::getDatabaseNames() const | 534 | QList<QByteArray> Storage::Transaction::getDatabaseNames() const |
537 | { | 535 | { |
538 | if (!d) { | 536 | if (!d) { |
539 | Warning() << "Invalid transaction"; | 537 | SinkWarning() << "Invalid transaction"; |
540 | return QList<QByteArray>(); | 538 | return QList<QByteArray>(); |
541 | } | 539 | } |
542 | 540 | ||
@@ -559,12 +557,12 @@ QList<QByteArray> Storage::Transaction::getDatabaseNames() const | |||
559 | rc = 0; | 557 | rc = 0; |
560 | } | 558 | } |
561 | if (rc) { | 559 | if (rc) { |
562 | Warning() << "Failed to get a value" << rc; | 560 | SinkWarning() << "Failed to get a value" << rc; |
563 | } | 561 | } |
564 | } | 562 | } |
565 | mdb_cursor_close(cursor); | 563 | mdb_cursor_close(cursor); |
566 | } else { | 564 | } else { |
567 | Warning() << "Failed to open db" << rc << QByteArray(mdb_strerror(rc)); | 565 | SinkWarning() << "Failed to open db" << rc << QByteArray(mdb_strerror(rc)); |
568 | } | 566 | } |
569 | return list; | 567 | return list; |
570 | } | 568 | } |
@@ -611,7 +609,7 @@ Storage::Private::Private(const QString &s, const QString &n, AccessMode m) : st | |||
611 | int rc = 0; | 609 | int rc = 0; |
612 | if ((rc = mdb_env_create(&env))) { | 610 | if ((rc = mdb_env_create(&env))) { |
613 | // TODO: handle error | 611 | // TODO: handle error |
614 | Warning() << "mdb_env_create: " << rc << " " << mdb_strerror(rc); | 612 | SinkWarning() << "mdb_env_create: " << rc << " " << mdb_strerror(rc); |
615 | } else { | 613 | } else { |
616 | mdb_env_set_maxdbs(env, 50); | 614 | mdb_env_set_maxdbs(env, 50); |
617 | unsigned int flags = MDB_NOTLS; | 615 | unsigned int flags = MDB_NOTLS; |
@@ -619,7 +617,7 @@ Storage::Private::Private(const QString &s, const QString &n, AccessMode m) : st | |||
619 | flags |= MDB_RDONLY; | 617 | flags |= MDB_RDONLY; |
620 | } | 618 | } |
621 | if ((rc = mdb_env_open(env, fullPath.toStdString().data(), flags, 0664))) { | 619 | if ((rc = mdb_env_open(env, fullPath.toStdString().data(), flags, 0664))) { |
622 | Warning() << "mdb_env_open: " << rc << " " << mdb_strerror(rc); | 620 | SinkWarning() << "mdb_env_open: " << rc << " " << mdb_strerror(rc); |
623 | mdb_env_close(env); | 621 | mdb_env_close(env); |
624 | env = 0; | 622 | env = 0; |
625 | } else { | 623 | } else { |
@@ -681,7 +679,7 @@ qint64 Storage::diskUsage() const | |||
681 | { | 679 | { |
682 | QFileInfo info(d->storageRoot + '/' + d->name + "/data.mdb"); | 680 | QFileInfo info(d->storageRoot + '/' + d->name + "/data.mdb"); |
683 | if (!info.exists()) { | 681 | if (!info.exists()) { |
684 | Warning() << "Tried to get filesize for non-existant file: " << info.path(); | 682 | SinkWarning() << "Tried to get filesize for non-existant file: " << info.path(); |
685 | } | 683 | } |
686 | return info.size(); | 684 | return info.size(); |
687 | } | 685 | } |
@@ -691,7 +689,7 @@ void Storage::removeFromDisk() const | |||
691 | const QString fullPath(d->storageRoot + '/' + d->name); | 689 | const QString fullPath(d->storageRoot + '/' + d->name); |
692 | QMutexLocker locker(&d->sMutex); | 690 | QMutexLocker locker(&d->sMutex); |
693 | QDir dir(fullPath); | 691 | QDir dir(fullPath); |
694 | Trace() << "Removing database from disk: " << fullPath; | 692 | SinkTrace() << "Removing database from disk: " << fullPath; |
695 | if (!dir.removeRecursively()) { | 693 | if (!dir.removeRecursively()) { |
696 | Error error(d->name.toLatin1(), ErrorCodes::GenericError, QString("Failed to remove directory %1 %2").arg(d->storageRoot).arg(d->name).toLatin1()); | 694 | Error error(d->name.toLatin1(), ErrorCodes::GenericError, QString("Failed to remove directory %1 %2").arg(d->storageRoot).arg(d->name).toLatin1()); |
697 | defaultErrorHandler()(error); | 695 | defaultErrorHandler()(error); |