summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2018-11-16 19:03:37 -0500
committerMathias Stearn <mathias@10gen.com>2018-11-30 19:21:46 -0500
commit69e3a7e1b92b72b5332339a9834a239c635f1350 (patch)
tree7d21bd4bbe83d23220d5f4afea968316f2684664
parent492493e2fc8162a1ee82fbc3ddf052a136670c75 (diff)
downloadmongo-69e3a7e1b92b72b5332339a9834a239c635f1350.tar.gz
SERVER-38193 Make AssertionCount use AtomicInt32
-rw-r--r--src/mongo/db/commands/server_status.cpp10
-rw-r--r--src/mongo/util/assert_util.cpp16
-rw-r--r--src/mongo/util/assert_util.h10
3 files changed, 18 insertions, 18 deletions
diff --git a/src/mongo/db/commands/server_status.cpp b/src/mongo/db/commands/server_status.cpp
index 01fd9569fc4..cc73a148cb8 100644
--- a/src/mongo/db/commands/server_status.cpp
+++ b/src/mongo/db/commands/server_status.cpp
@@ -255,11 +255,11 @@ public:
BSONObj generateSection(OperationContext* opCtx, const BSONElement& configElement) const {
BSONObjBuilder asserts;
- asserts.append("regular", assertionCount.regular);
- asserts.append("warning", assertionCount.warning);
- asserts.append("msg", assertionCount.msg);
- asserts.append("user", assertionCount.user);
- asserts.append("rollovers", assertionCount.rollovers);
+ asserts.append("regular", assertionCount.regular.loadRelaxed());
+ asserts.append("warning", assertionCount.warning.loadRelaxed());
+ asserts.append("msg", assertionCount.msg.loadRelaxed());
+ asserts.append("user", assertionCount.user.loadRelaxed());
+ asserts.append("rollovers", assertionCount.rollovers.loadRelaxed());
return asserts.obj();
}
diff --git a/src/mongo/util/assert_util.cpp b/src/mongo/util/assert_util.cpp
index 470d8c40096..e08cc30a5b1 100644
--- a/src/mongo/util/assert_util.cpp
+++ b/src/mongo/util/assert_util.cpp
@@ -61,11 +61,11 @@ AssertionCount assertionCount;
AssertionCount::AssertionCount() : regular(0), warning(0), msg(0), user(0), rollovers(0) {}
void AssertionCount::rollover() {
- rollovers++;
- regular = 0;
- warning = 0;
- msg = 0;
- user = 0;
+ rollovers.fetchAndAdd(1);
+ regular.store(0);
+ warning.store(0);
+ msg.store(0);
+ user.store(0);
}
void AssertionCount::condrollover(int newvalue) {
@@ -84,7 +84,7 @@ void DBException::traceIfNeeded(const DBException& e) {
}
NOINLINE_DECL void verifyFailed(const char* expr, const char* file, unsigned line) {
- assertionCount.condrollover(++assertionCount.regular);
+ assertionCount.condrollover(assertionCount.regular.addAndFetch(1));
error() << "Assertion failure " << expr << ' ' << file << ' ' << std::dec << line << std::endl;
logContext();
std::stringstream temp;
@@ -180,13 +180,13 @@ MONGO_COMPILER_NORETURN void fassertFailedWithStatusNoTraceWithLocation(int msgi
}
NOINLINE_DECL void uassertedWithLocation(const Status& status, const char* file, unsigned line) {
- assertionCount.condrollover(++assertionCount.user);
+ assertionCount.condrollover(assertionCount.user.addAndFetch(1));
LOG(1) << "User Assertion: " << redact(status) << ' ' << file << ' ' << std::dec << line;
error_details::throwExceptionForStatus(status);
}
NOINLINE_DECL void msgassertedWithLocation(const Status& status, const char* file, unsigned line) {
- assertionCount.condrollover(++assertionCount.msg);
+ assertionCount.condrollover(assertionCount.msg.addAndFetch(1));
error() << "Assertion: " << redact(status) << ' ' << file << ' ' << std::dec << line;
error_details::throwExceptionForStatus(status);
}
diff --git a/src/mongo/util/assert_util.h b/src/mongo/util/assert_util.h
index 46462fdf833..c31fdce0d57 100644
--- a/src/mongo/util/assert_util.h
+++ b/src/mongo/util/assert_util.h
@@ -52,11 +52,11 @@ public:
void rollover();
void condrollover(int newValue);
- int regular;
- int warning;
- int msg;
- int user;
- int rollovers;
+ AtomicInt32 regular;
+ AtomicInt32 warning;
+ AtomicInt32 msg;
+ AtomicInt32 user;
+ AtomicInt32 rollovers;
};
extern AssertionCount assertionCount;