diff options
author | Mathias Stearn <mathias@10gen.com> | 2017-08-16 17:10:45 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2017-08-17 22:13:09 -0400 |
commit | 5aa60782cebed045a316b5cd6706be726178ce09 (patch) | |
tree | 4f607cde04717bcaac905bcbc7bef5e9a1180426 | |
parent | 9297a658e1c061b8ee9d96d15b77972c648a866e (diff) | |
download | mongo-5aa60782cebed045a316b5cd6706be726178ce09.tar.gz |
SERVER-30702 Stop printing stack traces on massert failures
The NoTrace variants were removed as they are now redundant.
-rw-r--r-- | src/mongo/db/catalog/database_impl.cpp | 5 | ||||
-rw-r--r-- | src/mongo/db/ops/write_ops_exec.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/repl/master_slave.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/storage/mmap_v1/file_allocator.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp | 4 | ||||
-rw-r--r-- | src/mongo/util/assert_util.cpp | 20 | ||||
-rw-r--r-- | src/mongo/util/assert_util.h | 32 | ||||
-rw-r--r-- | src/mongo/util/assert_util_test.cpp | 17 | ||||
-rw-r--r-- | src/mongo/util/processinfo_linux.cpp | 2 |
9 files changed, 13 insertions, 79 deletions
diff --git a/src/mongo/db/catalog/database_impl.cpp b/src/mongo/db/catalog/database_impl.cpp index 171e4afebac..f4f88974360 100644 --- a/src/mongo/db/catalog/database_impl.cpp +++ b/src/mongo/db/catalog/database_impl.cpp @@ -746,9 +746,8 @@ Collection* DatabaseImpl::createCollection(OperationContext* opCtx, _checkCanCreateCollection(opCtx, nss, optionsWithUUID); audit::logCreateCollection(&cc(), ns); - Status status = - _dbEntry->createCollection(opCtx, ns, optionsWithUUID, true /*allocateDefaultSpace*/); - massertNoTraceStatusOK(status); + massertStatusOK( + _dbEntry->createCollection(opCtx, ns, optionsWithUUID, true /*allocateDefaultSpace*/)); opCtx->recoveryUnit()->registerChange(new AddCollectionChange(opCtx, this, ns)); Collection* collection = _getOrCreateCollectionInstance(opCtx, nss); diff --git a/src/mongo/db/ops/write_ops_exec.cpp b/src/mongo/db/ops/write_ops_exec.cpp index 3108743f97c..666ca4efcd4 100644 --- a/src/mongo/db/ops/write_ops_exec.cpp +++ b/src/mongo/db/ops/write_ops_exec.cpp @@ -214,10 +214,10 @@ bool handleError(OperationContext* opCtx, // testing, but it isn't severe enough that we should bring down the server if it // happens in production. dassert(staleConfigException); - msgassertedNoTrace(35475, - str::stream() - << "Got a StaleConfig error but exception was the wrong type: " - << demangleName(typeid(ex))); + msgasserted(35475, + str::stream() + << "Got a StaleConfig error but exception was the wrong type: " + << demangleName(typeid(ex))); } if (!opCtx->getClient()->isInDirectClient()) { diff --git a/src/mongo/db/repl/master_slave.cpp b/src/mongo/db/repl/master_slave.cpp index da01612154e..a7ed3eba640 100644 --- a/src/mongo/db/repl/master_slave.cpp +++ b/src/mongo/db/repl/master_slave.cpp @@ -438,7 +438,7 @@ void ReplSource::forceResync(OperationContext* opCtx, const char* requester) { if (!_connect(&oplogReader, HostAndPort(hostName), getGlobalReplicationCoordinator()->getMyRID())) { - msgassertedNoTrace(14051, "unable to connect to resync"); + msgasserted(14051, "unable to connect to resync"); } bool ok = oplogReader.conn()->runCommand( "admin", BSON("listDatabases" << 1), info, QueryOption_SlaveOk); diff --git a/src/mongo/db/storage/mmap_v1/file_allocator.cpp b/src/mongo/db/storage/mmap_v1/file_allocator.cpp index 460747cb5f9..d905adb2855 100644 --- a/src/mongo/db/storage/mmap_v1/file_allocator.cpp +++ b/src/mongo/db/storage/mmap_v1/file_allocator.cpp @@ -326,7 +326,7 @@ void FileAllocator::checkFailure() { if (_failed) { // we want to log the problem (diskfull.js expects it) but we do not want to dump a stack // trace - msgassertedNoTrace(12520, "new file allocation failure"); + msgasserted(12520, "new file allocation failure"); } } diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp index 2fd8b424604..43f4c7b545f 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp @@ -379,7 +379,7 @@ WiredTigerKVEngine::WiredTigerKVEngine(const std::string& canonicalName, fassertFailedNoTrace(28717); } else if (ret != 0) { Status s(wtRCToStatus(ret)); - msgassertedNoTrace(28718, s.reason()); + msgasserted(28718, s.reason()); } invariantWTOK(_conn->close(_conn, NULL)); // After successful recovery, remove the journal directory. @@ -403,7 +403,7 @@ WiredTigerKVEngine::WiredTigerKVEngine(const std::string& canonicalName, fassertFailedNoTrace(28561); } else if (ret != 0) { Status s(wtRCToStatus(ret)); - msgassertedNoTrace(28595, s.reason()); + msgasserted(28595, s.reason()); } _sessionCache.reset(new WiredTigerSessionCache(this)); diff --git a/src/mongo/util/assert_util.cpp b/src/mongo/util/assert_util.cpp index 34f8a379751..b1433b0e3b4 100644 --- a/src/mongo/util/assert_util.cpp +++ b/src/mongo/util/assert_util.cpp @@ -193,30 +193,12 @@ NOINLINE_DECL void msgassertedWithLocation(int msgid, StringData msg, const char* file, unsigned line) { - assertionCount.condrollover(++assertionCount.warning); - error() << "Assertion: " << msgid << ":" << redact(msg) << ' ' << file << ' ' << dec << line - << endl; - logContext(); - throw AssertionException(msgid, msg); -} - -NOINLINE_DECL void msgassertedNoTraceWithLocation(int msgid, - StringData msg, - const char* file, - unsigned line) { - assertionCount.condrollover(++assertionCount.warning); + assertionCount.condrollover(++assertionCount.msg); error() << "Assertion: " << msgid << ":" << redact(msg) << ' ' << file << ' ' << dec << line << endl; throw AssertionException(msgid, msg); } -void msgassertedNoTraceWithStatusWithLocation(int msgid, - const Status& status, - const char* file, - unsigned line) { - msgassertedNoTraceWithLocation(msgid, status.toString(), file, line); -} - std::string causedBy(StringData e) { constexpr auto prefix = " :: caused by :: "_sd; std::string out; diff --git a/src/mongo/util/assert_util.h b/src/mongo/util/assert_util.h index e03ae0446d8..ac8713f4b22 100644 --- a/src/mongo/util/assert_util.h +++ b/src/mongo/util/assert_util.h @@ -163,25 +163,9 @@ MONGO_COMPILER_NORETURN void uassertedWithLocation(int msgid, unsigned line); /** msgassert and massert are for errors that are internal but have a well defined error text - std::string. a stack trace is logged. + std::string. */ -#define msgassertedNoTrace MONGO_msgassertedNoTrace -#define MONGO_msgassertedNoTrace(...) \ - ::mongo::msgassertedNoTraceWithLocation(__VA_ARGS__, __FILE__, __LINE__) -MONGO_COMPILER_NORETURN void msgassertedNoTraceWithLocation(int msgid, - StringData msg, - const char* file, - unsigned line); - -#define msgassertedNoTraceWithStatus MONGO_msgassertedNoTraceWithStatus -#define MONGO_msgassertedNoTraceWithStatus(...) \ - ::mongo::msgassertedNoTraceWithStatusWithLocation(__VA_ARGS__, __FILE__, __LINE__) -MONGO_COMPILER_NORETURN void msgassertedNoTraceWithStatusWithLocation(int msgid, - const Status& status, - const char* file, - unsigned line); - #define msgasserted MONGO_msgasserted #define MONGO_msgasserted(...) ::mongo::msgassertedWithLocation(__VA_ARGS__, __FILE__, __LINE__) MONGO_COMPILER_NORETURN void msgassertedWithLocation(int msgid, @@ -324,20 +308,6 @@ inline void massertStatusOKWithLocation(const Status& status, const char* file, } } -#define massertNoTraceStatusOK MONGO_massertNoTraceStatusOK -#define MONGO_massertNoTraceStatusOK(...) \ - ::mongo::massertNoTraceStatusOKWithLocation(__VA_ARGS__, __FILE__, __LINE__) -inline void massertNoTraceStatusOKWithLocation(const Status& status, - const char* file, - unsigned line) { - if (MONGO_unlikely(!status.isOK())) { - [&]() MONGO_COMPILER_COLD_FUNCTION { - msgassertedNoTraceWithLocation(status.code(), status.reason(), file, line); - }(); - MONGO_COMPILER_UNREACHABLE; - } -} - /* same as massert except no msgid */ #define verify(expression) MONGO_verify(expression) #define MONGO_verify(_Expression) \ diff --git a/src/mongo/util/assert_util_test.cpp b/src/mongo/util/assert_util_test.cpp index a6a2f3a27c3..c369922c538 100644 --- a/src/mongo/util/assert_util_test.cpp +++ b/src/mongo/util/assert_util_test.cpp @@ -106,25 +106,8 @@ DEATH_TEST(MassertionTerminationTest, massertStatusOK, "Terminating with massert massertStatusOK(Status(ErrorCodes::InternalError, "Terminating with massertStatusOK")); } -DEATH_TEST(MassertionTerminationTest, - massertNoTraceStatusOK, - "Terminating with massertNoTraceStatusOK") { - massertNoTraceStatusOK( - Status(ErrorCodes::InternalError, "Terminating with massertNoTraceStatusOK")); -} - DEATH_TEST(MassertionTerminationTest, msgasserted, "Terminating with msgasserted") { msgasserted(40215, "Terminating with msgasserted"); } -DEATH_TEST(MassertionTerminationTest, msgassertedNoTrace, "Terminating with msgassertedNoTrace") { - msgassertedNoTrace(40216, "Terminating with msgassertedNoTrace"); -} - -DEATH_TEST(MassertionTerminationTest, - msgassertedNoTraceWithStatus, - "Terminating with msgassertedNoTraceWithStatus") { - msgassertedNoTraceWithStatus( - 40217, Status(ErrorCodes::InternalError, "Terminating with msgassertedNoTraceWithStatus")); -} } // namespace diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp index 11adf6785e6..c3debf377bd 100644 --- a/src/mongo/util/processinfo_linux.cpp +++ b/src/mongo/util/processinfo_linux.cpp @@ -73,7 +73,7 @@ public: stringstream ss; ss << "couldn't open [" << name << "] " << errnoWithDescription(); string s = ss.str(); - msgassertedNoTrace(13538, s.c_str()); + msgasserted(13538, s.c_str()); } int found = fscanf(f, "%d %127s %c " |