diff options
author | Mathias Stearn <mathias@10gen.com> | 2018-11-16 19:03:37 -0500 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2018-11-30 19:21:46 -0500 |
commit | 69e3a7e1b92b72b5332339a9834a239c635f1350 (patch) | |
tree | 7d21bd4bbe83d23220d5f4afea968316f2684664 | |
parent | 492493e2fc8162a1ee82fbc3ddf052a136670c75 (diff) | |
download | mongo-69e3a7e1b92b72b5332339a9834a239c635f1350.tar.gz |
SERVER-38193 Make AssertionCount use AtomicInt32
-rw-r--r-- | src/mongo/db/commands/server_status.cpp | 10 | ||||
-rw-r--r-- | src/mongo/util/assert_util.cpp | 16 | ||||
-rw-r--r-- | src/mongo/util/assert_util.h | 10 |
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; |