summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Milkie <milkie@10gen.com>2016-07-08 08:52:51 -0400
committerEric Milkie <milkie@10gen.com>2016-07-08 08:52:51 -0400
commit7e4412ef2a99ba791b8e345accf851c26656aec7 (patch)
tree1cdea85fb1fc24322ab39216f92907c0a733cc44
parent2addaf9a63c60e2311e266c11ad1bcdb12210d0b (diff)
downloadmongo-7e4412ef2a99ba791b8e345accf851c26656aec7.tar.gz
Revert "SERVER-24523 Include file and line numbers in assertions"
This reverts commit 744750da3a7173def0c37025e6d21f2c358363b5.
-rw-r--r--src/mongo/util/assert_util.cpp51
-rw-r--r--src/mongo/util/assert_util.h134
-rwxr-xr-xsrc/third_party/s2/base/logging.cc2
3 files changed, 57 insertions, 130 deletions
diff --git a/src/mongo/util/assert_util.cpp b/src/mongo/util/assert_util.cpp
index 0148969aaff..99b4ec6f5a0 100644
--- a/src/mongo/util/assert_util.cpp
+++ b/src/mongo/util/assert_util.cpp
@@ -165,42 +165,39 @@ NOINLINE_DECL void invariantOKFailed(const char* expr,
std::abort();
}
-NOINLINE_DECL void fassertFailedWithLocation(int msgid, const char* file, unsigned line) noexcept {
- log() << "Fatal Assertion " << msgid << " at " << file << " " << dec << line;
+NOINLINE_DECL void fassertFailed(int msgid) noexcept {
+ log() << "Fatal Assertion " << msgid << endl;
breakpoint();
log() << "\n\n***aborting after fassert() failure\n\n" << endl;
std::abort();
}
-NOINLINE_DECL void fassertFailedNoTraceWithLocation(int msgid,
- const char* file,
- unsigned line) noexcept {
- log() << "Fatal Assertion " << msgid << " at " << file << " " << dec << line;
+NOINLINE_DECL void fassertFailedNoTrace(int msgid) noexcept {
+ log() << "Fatal Assertion " << msgid << endl;
breakpoint();
log() << "\n\n***aborting after fassert() failure\n\n" << endl;
quickExit(EXIT_ABRUPT);
}
-MONGO_COMPILER_NORETURN void fassertFailedWithStatusWithLocation(int msgid,
- const Status& status,
- const char* file,
- unsigned line) noexcept {
- log() << "Fatal assertion " << msgid << " " << status << " at " << file << " " << dec << line;
+MONGO_COMPILER_NORETURN void fassertFailedWithStatus(int msgid, const Status& status) noexcept {
+ log() << "Fatal assertion " << msgid << " " << status;
breakpoint();
log() << "\n\n***aborting after fassert() failure\n\n" << endl;
std::abort();
}
-MONGO_COMPILER_NORETURN void fassertFailedWithStatusNoTraceWithLocation(int msgid,
- const Status& status,
- const char* file,
- unsigned line) noexcept {
- log() << "Fatal assertion " << msgid << " " << status << " at " << file << " " << dec << line;
+MONGO_COMPILER_NORETURN void fassertFailedWithStatusNoTrace(int msgid,
+ const Status& status) noexcept {
+ log() << "Fatal assertion " << msgid << " " << status;
breakpoint();
log() << "\n\n***aborting after fassert() failure\n\n" << endl;
quickExit(EXIT_ABRUPT);
}
+void uasserted(int msgid, const string& msg) {
+ uasserted(msgid, msg.c_str());
+}
+
void UserException::appendPrefix(stringstream& ss) const {
ss << "userassert:";
}
@@ -208,29 +205,19 @@ void MsgAssertionException::appendPrefix(stringstream& ss) const {
ss << "massert:";
}
-void uassertedWithLocation(int msgid, const string& msg, const char* file, unsigned line) {
- uassertedWithLocation(msgid, msg.c_str(), file, line);
-}
-
-NOINLINE_DECL void uassertedWithLocation(int msgid,
- const char* msg,
- const char* file,
- unsigned line) {
+NOINLINE_DECL void uasserted(int msgid, const char* msg) {
assertionCount.condrollover(++assertionCount.user);
- log() << "User Assertion: " << msgid << ":" << msg << ' ' << file << ' ' << dec << line << endl;
+ LOG(1) << "User Assertion: " << msgid << ":" << msg << endl;
throw UserException(msgid, msg);
}
-void msgassertedWithLocation(int msgid, const string& msg, const char* file, unsigned line) {
- msgassertedWithLocation(msgid, msg.c_str(), file, line);
+void msgasserted(int msgid, const string& msg) {
+ msgasserted(msgid, msg.c_str());
}
-NOINLINE_DECL void msgassertedWithLocation(int msgid,
- const char* msg,
- const char* file,
- unsigned line) {
+NOINLINE_DECL void msgasserted(int msgid, const char* msg) {
assertionCount.condrollover(++assertionCount.warning);
- log() << "Assertion: " << msgid << ":" << msg << ' ' << file << ' ' << dec << line << endl;
+ log() << "Assertion: " << msgid << ":" << msg << endl;
logContext();
throw MsgAssertionException(msgid, msg);
}
diff --git a/src/mongo/util/assert_util.h b/src/mongo/util/assert_util.h
index bb11227db1a..3e6afbb5eaa 100644
--- a/src/mongo/util/assert_util.h
+++ b/src/mongo/util/assert_util.h
@@ -179,47 +179,17 @@ MONGO_COMPILER_NORETURN void invariantOKFailed(const char* expr,
const char* file,
unsigned line) noexcept;
void wasserted(const char* expr, const char* file, unsigned line);
-
-#define fassertFailed MONGO_fassertFailed
-#define MONGO_fassertFailed(...) ::mongo::fassertFailedWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-MONGO_COMPILER_NORETURN void fassertFailedWithLocation(int msgid,
- const char* file,
- unsigned line) noexcept;
-
-#define fassertFailedNoTrace MONGO_fassertFailedNoTrace
-#define MONGO_fassertFailedNoTrace(...) \
- ::mongo::fassertFailedNoTraceWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-MONGO_COMPILER_NORETURN void fassertFailedNoTraceWithLocation(int msgid,
- const char* file,
- unsigned line) noexcept;
-
-#define fassertFailedWithStatus MONGO_fassertFailedWithStatus
-#define MONGO_fassertFailedWithStatus(...) \
- ::mongo::fassertFailedWithStatusWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-MONGO_COMPILER_NORETURN void fassertFailedWithStatusWithLocation(int msgid,
- const Status& status,
- const char* file,
- unsigned line) noexcept;
-
-#define fassertFailedWithStatusNoTrace MONGO_fassertFailedWithStatusNoTrace
-#define MONGO_fassertFailedWithStatusNoTrace(...) \
- ::mongo::fassertFailedWithStatusNoTraceWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-MONGO_COMPILER_NORETURN void fassertFailedWithStatusNoTraceWithLocation(int msgid,
- const Status& status,
- const char* file,
- unsigned line) noexcept;
+MONGO_COMPILER_NORETURN void fassertFailed(int msgid) noexcept;
+MONGO_COMPILER_NORETURN void fassertFailedNoTrace(int msgid) noexcept;
+MONGO_COMPILER_NORETURN void fassertFailedWithStatus(int msgid, const Status& status) noexcept;
+MONGO_COMPILER_NORETURN void fassertFailedWithStatusNoTrace(int msgid,
+ const Status& status) noexcept;
/** a "user assertion". throws UserAssertion. logs. typically used for errors that a user
could cause, such as duplicate key, disk full, etc.
*/
-MONGO_COMPILER_NORETURN void uassertedWithLocation(int msgid,
- const char* msg,
- const char* file,
- unsigned line);
-MONGO_COMPILER_NORETURN void uassertedWithLocation(int msgid,
- const std::string& msg,
- const char* file,
- unsigned line);
+MONGO_COMPILER_NORETURN void uasserted(int msgid, const char* msg);
+MONGO_COMPILER_NORETURN void uasserted(int msgid, const std::string& msg);
/** msgassert and massert are for errors that are internal but have a well defined error text
std::string. a stack trace is logged.
@@ -227,14 +197,8 @@ MONGO_COMPILER_NORETURN void uassertedWithLocation(int msgid,
MONGO_COMPILER_NORETURN void msgassertedNoTrace(int msgid, const char* msg);
MONGO_COMPILER_NORETURN void msgassertedNoTrace(int msgid, const std::string& msg);
MONGO_COMPILER_NORETURN void msgassertedNoTraceWithStatus(int msgid, const Status& status);
-MONGO_COMPILER_NORETURN void msgassertedWithLocation(int msgid,
- const char* msg,
- const char* file,
- unsigned line);
-MONGO_COMPILER_NORETURN void msgassertedWithLocation(int msgid,
- const std::string& msg,
- const char* file,
- unsigned line);
+MONGO_COMPILER_NORETURN void msgasserted(int msgid, const char* msg);
+MONGO_COMPILER_NORETURN void msgasserted(int msgid, const std::string& msg);
/* convert various types of exceptions to strings */
std::string causedBy(const char* e);
@@ -244,31 +208,21 @@ std::string causedBy(const std::string& e);
std::string causedBy(const std::string* e);
std::string causedBy(const Status& e);
-#define fassert MONGO_fassert
-#define MONGO_fassert(...) ::mongo::fassertWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-
/** aborts on condition failure */
-inline void fassertWithLocation(int msgid, bool testOK, const char* file, unsigned line) {
- if (MONGO_unlikely(!testOK)) {
- fassertFailedWithLocation(msgid, file, line);
- }
+inline void fassert(int msgid, bool testOK) {
+ if (MONGO_unlikely(!testOK))
+ fassertFailed(msgid);
}
-inline void fassertWithLocation(int msgid, const Status& status, const char* file, unsigned line) {
+inline void fassert(int msgid, const Status& status) {
if (MONGO_unlikely(!status.isOK())) {
- fassertFailedWithStatusWithLocation(msgid, status, file, line);
+ fassertFailedWithStatus(msgid, status);
}
}
-#define fassertNoTrace MONGO_fassertNoTrace
-#define MONGO_fassertNoTrace(...) \
- ::mongo::fassertNoTraceWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-inline void fassertNoTraceWithLocation(int msgid,
- const Status& status,
- const char* file,
- unsigned line) {
+inline void fassertNoTrace(int msgid, const Status& status) {
if (MONGO_unlikely(!status.isOK())) {
- fassertNoTraceWithLocation(msgid, status, file, line);
+ fassertFailedWithStatusNoTrace(msgid, status);
}
}
@@ -281,32 +235,23 @@ inline void fassertNoTraceWithLocation(int msgid,
* MONGO_COMPILER_UNREACHABLE as it is impossible to mark a lambda noreturn.
*/
#define uassert MONGO_uassert
-#define MONGO_uassert(msgid, msg, expr) \
- do { \
- if (MONGO_unlikely(!(expr))) { \
- [&]() MONGO_COMPILER_COLD_FUNCTION { \
- ::mongo::uassertedWithLocation(msgid, msg, __FILE__, __LINE__); \
- }(); \
- MONGO_COMPILER_UNREACHABLE; \
- } \
+#define MONGO_uassert(msgid, msg, expr) \
+ do { \
+ if (MONGO_unlikely(!(expr))) { \
+ [&]() MONGO_COMPILER_COLD_FUNCTION { ::mongo::uasserted(msgid, msg); }(); \
+ MONGO_COMPILER_UNREACHABLE; \
+ } \
} while (false)
-#define uasserted MONGO_uasserted
-#define MONGO_uasserted(...) ::mongo::uassertedWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-
-#define uassertStatusOK MONGO_uassertStatusOK
-#define MONGO_uassertStatusOK(...) \
- ::mongo::uassertStatusOKWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-
-inline void uassertStatusOKWithLocation(const Status& status, const char* file, unsigned line) {
- if (MONGO_unlikely(!status.isOK())) {
- uasserted((status.location() != 0 ? status.location() : status.code()), status.reason());
- }
+inline void uassertStatusOK(const Status& status) {
+ uassert((status.location() != 0 ? status.location() : status.code()),
+ status.reason(),
+ status.isOK());
}
template <typename T>
-inline T uassertStatusOKWithLocation(StatusWith<T> sw, const char* file, unsigned line) {
- uassertStatusOKWithLocation(sw.getStatus(), file, line);
+inline T uassertStatusOK(StatusWith<T> sw) {
+ uassertStatusOK(sw.getStatus());
return std::move(sw.getValue());
}
@@ -339,23 +284,18 @@ inline void fassertStatusOK(int msgid, const Status& s) {
display happening.
*/
#define massert MONGO_massert
-#define MONGO_massert(msgid, msg, expr) \
- do { \
- if (MONGO_unlikely(!(expr))) { \
- [&]() MONGO_COMPILER_COLD_FUNCTION { \
- ::mongo::msgassertedWithLocation(msgid, msg, __FILE__, __LINE__); \
- }(); \
- MONGO_COMPILER_UNREACHABLE; \
- } \
+#define MONGO_massert(msgid, msg, expr) \
+ do { \
+ if (MONGO_unlikely(!(expr))) { \
+ [&]() MONGO_COMPILER_COLD_FUNCTION { ::mongo::msgasserted(msgid, msg); }(); \
+ MONGO_COMPILER_UNREACHABLE; \
+ } \
} while (false)
-#define msgasserted MONGO_msgasserted
-#define MONGO_msgasserted(...) ::mongo::msgassertedWithLocation(__VA_ARGS__, __FILE__, __LINE__)
-
inline void massertStatusOK(const Status& status) {
- if (MONGO_unlikely(!status.isOK())) {
- msgasserted((status.location() != 0 ? status.location() : status.code()), status.reason());
- }
+ massert((status.location() != 0 ? status.location() : status.code()),
+ status.reason(),
+ status.isOK());
}
inline void massertNoTraceStatusOK(const Status& status) {
diff --git a/src/third_party/s2/base/logging.cc b/src/third_party/s2/base/logging.cc
index 503037c89e7..cc5243a27b8 100755
--- a/src/third_party/s2/base/logging.cc
+++ b/src/third_party/s2/base/logging.cc
@@ -40,5 +40,5 @@ LogMessageFatal::LogMessageFatal(const char* file, int line) :
LogMessageFatal::~LogMessageFatal() {
_lsb.~LogstreamBuilder();
- fassertFailed(40048);
+ mongo::fassertFailed(0);
}