1
0
Fork 0

Bug fix/internal issue #417 (#5775)

* ensure correctness of log level mapping

* fix bug

* code cleanup
This commit is contained in:
Andrey Abramov 2018-07-05 16:58:44 +03:00 committed by GitHub
parent 3bcaa9e95c
commit b767e5625e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 8 deletions

View File

@ -1947,7 +1947,7 @@ class writer final : public iresearch::columnstore_writer {
// flush block if we've overcome INDEX_BLOCK_SIZE size (before push_back)
if (INDEX_BLOCK_SIZE <= block_index_.size()) {
flush_block();
min_ = key;
min_ = pending_key_;
offset = block_buf_.size(); // reset offset to position in the current block
}

View File

@ -76,9 +76,9 @@ NS_LOCAL
class IResearchLogTopic final : public arangodb::LogTopic {
public:
IResearchLogTopic(std::string const& name, arangodb::LogLevel level)
: arangodb::LogTopic(name, level) {
setIResearchLogLevel(level);
IResearchLogTopic(std::string const& name)
: arangodb::LogTopic(name, DEFAULT_LEVEL) {
setIResearchLogLevel(DEFAULT_LEVEL);
}
virtual void setLogLevel(arangodb::LogLevel level) override {
@ -87,12 +87,34 @@ class IResearchLogTopic final : public arangodb::LogTopic {
}
private:
static arangodb::LogLevel const DEFAULT_LEVEL= arangodb::LogLevel::INFO;
typedef std::underlying_type<irs::logger::level_t>::type irsLogLevelType;
typedef std::underlying_type<arangodb::LogLevel>::type arangoLogLevelType;
static_assert(
static_cast<irsLogLevelType>(irs::logger::IRL_FATAL) == static_cast<arangoLogLevelType>(arangodb::LogLevel::FATAL) - 1
&& static_cast<irsLogLevelType>(irs::logger::IRL_ERROR) == static_cast<arangoLogLevelType>(arangodb::LogLevel::ERR) - 1
&& static_cast<irsLogLevelType>(irs::logger::IRL_WARN) == static_cast<arangoLogLevelType>(arangodb::LogLevel::WARN) - 1
&& static_cast<irsLogLevelType>(irs::logger::IRL_INFO) == static_cast<arangoLogLevelType>(arangodb::LogLevel::INFO) - 1
&& static_cast<irsLogLevelType>(irs::logger::IRL_DEBUG) == static_cast<arangoLogLevelType>(arangodb::LogLevel::DEBUG) - 1
&& static_cast<irsLogLevelType>(irs::logger::IRL_TRACE) == static_cast<arangoLogLevelType>(arangodb::LogLevel::TRACE) - 1,
"inconsistent log level mapping"
);
static void setIResearchLogLevel(arangodb::LogLevel level) {
auto irsLevel = static_cast<irs::logger::level_t>(level);
if (level == arangodb::LogLevel::DEFAULT) {
level = DEFAULT_LEVEL;
}
auto irsLevel = static_cast<irs::logger::level_t>(
static_cast<arangoLogLevelType>(level) - 1
); // -1 for DEFAULT
irsLevel = std::max(irsLevel, irs::logger::IRL_FATAL);
irsLevel = std::min(irsLevel, irs::logger::IRL_TRACE);
irs::logger::enabled(irsLevel);
irs::logger::output_le(irsLevel, stderr);
}
}; // IResearchLogTopic
@ -347,7 +369,7 @@ void registerTransactionDataSourceRegistrationCallback() {
}
std::string const FEATURE_NAME("ArangoSearch");
IResearchLogTopic LIBIRESEARCH("libiresearch", arangodb::LogLevel::INFO);
IResearchLogTopic LIBIRESEARCH("libiresearch");
NS_END
@ -707,4 +729,4 @@ NS_END // arangodb
// -----------------------------------------------------------------------------
// --SECTION-- END-OF-FILE
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------