1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into devel

This commit is contained in:
jsteemann 2016-01-30 01:08:59 +01:00
commit 5bfd12a0ce
6 changed files with 39 additions and 23 deletions

2
README
View File

@ -25,7 +25,7 @@ Here is an AQL query that makes use of all those features:
AQL Query Example AQL Query Example
Joins and transactions are key features for flexible, secure data designs,
widely used in relational databases but lacking in many NoSQL products.
However, there is no need to forget them in ArangoDB. You decide how and when
However, there is no need to forego them in ArangoDB. You decide how and when
to use joins and strong consistency guarantees, without sacrificing performance
and scalability.
Furthermore, ArangoDB offers a JavaScript framework called Foxx that is

View File

@ -2296,7 +2296,8 @@ static int WarmupEnvironment(v8::Isolate* isolate,
"no 'javascript.startup-directory' has been supplied, giving up");
}
LOG(DEBUG) << "using JavaScript startup files at '" << StartupPath.c_str() << "'";
LOG(DEBUG) << "using JavaScript startup files at '" << StartupPath << "'";
StartupLoader.setDirectory(StartupPath);
// load all init files
@ -2329,7 +2330,7 @@ static int WarmupEnvironment(v8::Isolate* isolate,
for (size_t i = 0; i < files.size(); ++i) {
switch (StartupLoader.loadScript(isolate, context, files[i])) {
case JSLoader::eSuccess:
LOG(TRACE) << "loaded JavaScript file '" << files[i].c_str() << "'";
LOG(TRACE) << "loaded JavaScript file '" << files[i] << "'";
break;
case JSLoader::eFailLoad:
LOG_FATAL_AND_EXIT("cannot load JavaScript file '%s'",

View File

@ -30,7 +30,7 @@ namespace {
std::atomic_int_fast16_t NEXT_TOPIC_ID(0);
}
LogLevel Logger::_level = LogLevel::INFO;
std::atomic<LogLevel> Logger::_level(LogLevel::INFO);
LogTopic::LogTopic(std::string const& name)
: LogTopic(name, LogLevel::DEFAULT) {}
@ -49,7 +49,7 @@ LogTopic LogTopic::operator|(LogTopic const& that) {
result._topics |= that._topics;
if (result._level < that._level) {
result._level = that._level;
result._level.store(that._level, std::memory_order_relaxed);
}
}
@ -60,3 +60,7 @@ LogTopic Logger::COLLECTOR("collector");
LogTopic Logger::COMPACTOR("compactor");
LogTopic Logger::PERFORMANCE("performance");
LogTopic Logger::REQUESTS("request");
void Logger::setLevel(LogLevel level) {
_level = level;
}

View File

@ -95,16 +95,18 @@ class LogTopic {
LogTopic(std::string const& name, LogLevel level);
LogTopic(LogTopic const& that) noexcept : _topicId(that._topicId),
_topics(that._topics),
_level(that._level) {}
_topics(that._topics) {
_level.store(that._level, std::memory_order_relaxed);
}
LogTopic(LogTopic&& that) noexcept : _topicId(that._topicId),
_topics(std::move(that._topics)),
_level(that._level) {}
_topics(std::move(that._topics)) {
_level.store(that._level, std::memory_order_relaxed);
}
public:
LogLevel level() const { return _level; }
void setLevel(LogLevel level) { _level = level; }
LogLevel level() const { return _level.load(std::memory_order_relaxed); }
void setLevel(LogLevel level) { _level.store(level, std::memory_order_relaxed); }
std::bitset<MAX_LOG_TOPICS> const& bits() const { return _topics; }
LogTopic operator|(LogTopic const&);
@ -112,7 +114,7 @@ class LogTopic {
private:
size_t _topicId;
std::bitset<MAX_LOG_TOPICS> _topics;
LogLevel _level;
std::atomic<LogLevel> _level;
};
////////////////////////////////////////////////////////////////////////////////
@ -187,11 +189,19 @@ class Logger {
};
public:
//////////////////////////////////////////////////////////////////////////////
/// @brief sets the log level
//////////////////////////////////////////////////////////////////////////////
static void setLevel(LogLevel);
//////////////////////////////////////////////////////////////////////////////
/// @brief checks if logging is enabled for log level
//////////////////////////////////////////////////////////////////////////////
static bool isEnabled(LogLevel level) { return (int)level <= (int)_level; }
static bool isEnabled(LogLevel level) {
return (int)level <= (int)_level.load(std::memory_order_relaxed);
}
//////////////////////////////////////////////////////////////////////////////
/// @brief checks if logging is enabled for log topic
@ -199,7 +209,8 @@ class Logger {
static bool isEnabled(LogLevel level, LogTopic const& topic) {
return (int)level <=
(int)((topic.level() == LogLevel::DEFAULT) ? _level : topic.level());
(int)((topic.level() == LogLevel::DEFAULT) ? _level.load(std::memory_order_relaxed)
: topic.level());
}
private:
@ -207,7 +218,7 @@ class Logger {
/// @brief current log level
//////////////////////////////////////////////////////////////////////////////
static LogLevel _level;
static std::atomic<LogLevel> _level;
};
////////////////////////////////////////////////////////////////////////////////

View File

@ -46,6 +46,7 @@
#include "Basics/tri-strings.h"
#include "Basics/vector.h"
using namespace arangodb;
using namespace arangodb::basics;
////////////////////////////////////////////////////////////////////////////////
@ -945,27 +946,34 @@ void TRI_SetLogLevelLogging(char const* level) {
IsTrace = 0;
if (TRI_CaseEqualString(level, "fatal")) {
Logger::setLevel(LogLevel::FATAL);
} else if (TRI_CaseEqualString(level, "error")) {
Logger::setLevel(LogLevel::ERROR);
IsError = 1;
} else if (TRI_CaseEqualString(level, "warning")) {
Logger::setLevel(LogLevel::WARNING);
IsError = 1;
IsWarning = 1;
} else if (TRI_CaseEqualString(level, "info")) {
Logger::setLevel(LogLevel::INFO);
IsError = 1;
IsWarning = 1;
IsInfo = 1;
} else if (TRI_CaseEqualString(level, "debug")) {
Logger::setLevel(LogLevel::DEBUG);
IsError = 1;
IsWarning = 1;
IsInfo = 1;
IsDebug = 1;
} else if (TRI_CaseEqualString(level, "trace")) {
Logger::setLevel(LogLevel::TRACE);
IsError = 1;
IsWarning = 1;
IsInfo = 1;
IsDebug = 1;
IsTrace = 1;
} else {
Logger::setLevel(LogLevel::INFO);
IsError = 1;
IsWarning = 1;
IsInfo = 1;

View File

@ -1,14 +1,6 @@
#!/bin/bash
export PID=$$
self=$0
if test -f "${self}.js"; then
export SCRIPT=${self}.js
else
export SCRIPT=$1
shift
fi
if test -n "$ORIGINAL_PATH"; then
# running in cygwin...
PS='\'