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) // flush block if we've overcome INDEX_BLOCK_SIZE size (before push_back)
if (INDEX_BLOCK_SIZE <= block_index_.size()) { if (INDEX_BLOCK_SIZE <= block_index_.size()) {
flush_block(); flush_block();
min_ = key; min_ = pending_key_;
offset = block_buf_.size(); // reset offset to position in the current block 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 { class IResearchLogTopic final : public arangodb::LogTopic {
public: public:
IResearchLogTopic(std::string const& name, arangodb::LogLevel level) IResearchLogTopic(std::string const& name)
: arangodb::LogTopic(name, level) { : arangodb::LogTopic(name, DEFAULT_LEVEL) {
setIResearchLogLevel(level); setIResearchLogLevel(DEFAULT_LEVEL);
} }
virtual void setLogLevel(arangodb::LogLevel level) override { virtual void setLogLevel(arangodb::LogLevel level) override {
@ -87,12 +87,34 @@ class IResearchLogTopic final : public arangodb::LogTopic {
} }
private: 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) { 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::max(irsLevel, irs::logger::IRL_FATAL);
irsLevel = std::min(irsLevel, irs::logger::IRL_TRACE); irsLevel = std::min(irsLevel, irs::logger::IRL_TRACE);
irs::logger::enabled(irsLevel); irs::logger::output_le(irsLevel, stderr);
} }
}; // IResearchLogTopic }; // IResearchLogTopic
@ -347,7 +369,7 @@ void registerTransactionDataSourceRegistrationCallback() {
} }
std::string const FEATURE_NAME("ArangoSearch"); std::string const FEATURE_NAME("ArangoSearch");
IResearchLogTopic LIBIRESEARCH("libiresearch", arangodb::LogLevel::INFO); IResearchLogTopic LIBIRESEARCH("libiresearch");
NS_END NS_END