summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Williams <louis.williams@mongodb.com>2018-11-01 11:16:18 +1100
committerLuke Chen <luke.chen@mongodb.com>2018-11-01 11:18:35 +1100
commit681588bf1a442979d5a4b32bc6f519428e2f3235 (patch)
tree6f4f5f8679c4c44f072e963ea8404c212bb5b015
parent3d60283fad14b4c62274bbd4bc61a9b606929cdb (diff)
downloadmongo-681588bf1a442979d5a4b32bc6f519428e2f3235.tar.gz
SERVER-37595 [3.6] Handle WT_TRY_SALVAGE error code gracefully
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp9
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;