diff options
author | Louis Williams <louis.williams@mongodb.com> | 2018-11-01 11:16:18 +1100 |
---|---|---|
committer | Luke Chen <luke.chen@mongodb.com> | 2018-11-01 11:18:35 +1100 |
commit | 681588bf1a442979d5a4b32bc6f519428e2f3235 (patch) | |
tree | 6f4f5f8679c4c44f072e963ea8404c212bb5b015 | |
parent | 3d60283fad14b4c62274bbd4bc61a9b606929cdb (diff) | |
download | mongo-681588bf1a442979d5a4b32bc6f519428e2f3235.tar.gz |
SERVER-37595 [3.6] Handle WT_TRY_SALVAGE error code gracefully
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp index 059269aa2f5..d41c64cbe83 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp @@ -53,6 +53,9 @@ namespace mongo { using std::string; +const char* kWTRepairMsg = + "This version of MongoDB is unable to repair this kind of corruption, but version 4.0.3+ may " + "be able to repair it. See http://dochub.mongodb.org/core/repair for more information."; Status wtRCToStatus_slow(int retCode, const char* prefix) { if (retCode == 0) @@ -62,6 +65,12 @@ Status wtRCToStatus_slow(int retCode, const char* prefix) { throw WriteConflictException(); } + if (retCode == WT_TRY_SALVAGE) { + severe() << "WiredTiger metadata corruption detected"; + severe() << kWTRepairMsg; + fassertFailedNoTrace(50944); + } + fassert(28559, retCode != WT_PANIC); str::stream s; |