From 1b7e3af966312fbf9d64bb06d4b04b732a83098f Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 18 Aug 2018 18:29:00 -0700 Subject: [PATCH] ircd::db: Simplify internal seek stack; minor cleanup. --- include/ircd/db/database/env/state.h | 6 ++--- ircd/db.cc | 36 +++++++++++++++------------- ircd/db.h | 1 - 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/include/ircd/db/database/env/state.h b/include/ircd/db/database/env/state.h index 1f1f9b5f1..a0a0e633b 100644 --- a/include/ircd/db/database/env/state.h +++ b/include/ircd/db/database/env/state.h @@ -31,9 +31,9 @@ struct ircd::db::database::env::state std::array pool {{ // name of pool stack size initial workers - { "bottom", 128_KiB, 0 }, - { "low", 128_KiB, 0 }, - { "high", 128_KiB, 0 }, + { "rdb bott", 128_KiB, 0 }, + { "rdb low", 128_KiB, 0 }, + { "rdb high", 128_KiB, 0 }, }}; state(database *const &d) diff --git a/ircd/db.cc b/ircd/db.cc index a39f4ec32..9dd43f8de 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -60,17 +60,17 @@ // Misc / General linkages // +/// Dedicated logging facility for the database subsystem decltype(ircd::db::log) ircd::db::log { - // Dedicated logging facility for the database subsystem "db", 'D' }; +/// Dedicated logging facility for rocksdb's log callbacks decltype(ircd::db::rog) ircd::db::rog { - // Dedicated logging facility for rocksdb's log callbacks "rdb", 'R' }; @@ -4514,11 +4514,11 @@ ircd::db::seek(row &r, return 0; #ifdef RB_DEBUG_DB_SEEK + const column &c(r[0]); + const database &d(c); const ircd::timer timer; #endif - const column &c(r[0]); - const database &d(c); const auto ret { std::count_if(begin(r), end(r), [&p] @@ -5641,8 +5641,8 @@ namespace ircd::db static rocksdb::Iterator &_seek_(rocksdb::Iterator &, const string_view &); static rocksdb::Iterator &_seek_lower_(rocksdb::Iterator &, const string_view &); static rocksdb::Iterator &_seek_upper_(rocksdb::Iterator &, const string_view &); - bool _seek(database::column &, const pos &, const rocksdb::ReadOptions &, std::unique_ptr &it); - bool _seek(database::column &, const string_view &, const rocksdb::ReadOptions &, std::unique_ptr &it); + bool _seek(database::column &, const pos &, const rocksdb::ReadOptions &, rocksdb::Iterator &it); + bool _seek(database::column &, const string_view &, const rocksdb::ReadOptions &, rocksdb::Iterator &it); } std::unique_ptr @@ -5687,19 +5687,21 @@ ircd::db::seek(database::column &c, it.reset(d.d->NewIterator(opts, cf)); } - return _seek(c, p, opts, it); + return _seek(c, p, opts, *it); } bool ircd::db::_seek(database::column &c, const string_view &p, const rocksdb::ReadOptions &opts, - std::unique_ptr &it) + rocksdb::Iterator &it) { + #ifdef RB_DEBUG_DB_SEEK database &d(*c.d); const ircd::timer timer; + #endif - _seek_(*it, p); + _seek_(it, p); #ifdef RB_DEBUG_DB_SEEK log::debug @@ -5708,29 +5710,31 @@ ircd::db::_seek(database::column &c, name(d), sequence(d), sequence(opts.snapshot), - it->status().ToString(), + it.status().ToString(), timer.at().count(), name(c) }; #endif - return valid(*it); + return valid(it); } bool ircd::db::_seek(database::column &c, const pos &p, const rocksdb::ReadOptions &opts, - std::unique_ptr &it) + rocksdb::Iterator &it) { + #ifdef RB_DEBUG_DB_SEEK database &d(*c.d); const ircd::timer timer; const bool valid_it { - valid(*it) + valid(it) }; + #endif - _seek_(*it, p); + _seek_(it, p); #ifdef RB_DEBUG_DB_SEEK log::debug @@ -5741,13 +5745,13 @@ ircd::db::_seek(database::column &c, sequence(opts.snapshot), reflect(p), valid_it? "VALID" : "INVALID", - it->status().ToString(), + it.status().ToString(), timer.at().count(), name(c) }; #endif - return valid(*it); + return valid(it); } /// Seek to entry NOT GREATER THAN key. That is, equal to or less than key diff --git a/ircd/db.h b/ircd/db.h index 29aca8be8..55bed9615 100644 --- a/ircd/db.h +++ b/ircd/db.h @@ -38,7 +38,6 @@ namespace ircd::db const auto NON_BLOCKING = rocksdb::ReadTier::kBlockCacheTier; const auto DEFAULT_READAHEAD = 4_MiB; - // Dedicated logging facility for rocksdb's log callbacks extern log::log rog; string_view reflect(const rocksdb::Env::Priority &p);