summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage
diff options
context:
space:
mode:
authorLouis Williams <louis.williams@mongodb.com>2018-11-02 12:13:32 -0400
committerLouis Williams <louis.williams@mongodb.com>2018-11-05 10:51:59 -0500
commitc7553b861796c1581c85b3cbc4e55dcc9666aa0f (patch)
treef11b8f91fcc30c90b215a7f42e894aa523c5330c /src/mongo/db/storage
parent7dbcd710077bc4141e71730be9e12558880375e6 (diff)
downloadmongo-c7553b861796c1581c85b3cbc4e55dcc9666aa0f.tar.gz
SERVER-37796 Always salvage WiredTiger metadata regardless of error code when starting with repair
Diffstat (limited to 'src/mongo/db/storage')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
index 7c33e7931ca..1e56c36bd64 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
@@ -648,22 +648,26 @@ void WiredTigerKVEngine::_openWiredTiger(const std::string& path, const std::str
severe() << kWTRepairMsg;
fassertFailedNoTrace(50944);
}
+ }
- warning() << "Attempting to salvage WiredTiger metadata";
- configStr = wtOpenConfig + ",salvage=true";
- ret = wiredtiger_open(path.c_str(), wtEventHandler, configStr.c_str(), &_conn);
- if (!ret) {
- StorageRepairObserver::get(getGlobalServiceContext())
- ->onModification("WiredTiger metadata salvaged");
- return;
- }
+ severe() << "Reason: " << wtRCToStatus(ret).reason();
+ if (!_inRepairMode) {
+ fassertFailedNoTrace(28595);
+ }
+
+ // Always attempt to salvage metadata regardless of error code when in repair mode.
- severe() << "Failed to salvage WiredTiger metadata: " + wtRCToStatus(ret).reason();
- fassertFailedNoTrace(50947);
+ warning() << "Attempting to salvage WiredTiger metadata";
+ configStr = wtOpenConfig + ",salvage=true";
+ ret = wiredtiger_open(path.c_str(), wtEventHandler, configStr.c_str(), &_conn);
+ if (!ret) {
+ StorageRepairObserver::get(getGlobalServiceContext())
+ ->onModification("WiredTiger metadata salvaged");
+ return;
}
- severe() << "Reason: " << wtRCToStatus(ret).reason();
- fassertFailedNoTrace(28595);
+ severe() << "Failed to salvage WiredTiger metadata: " + wtRCToStatus(ret).reason();
+ fassertFailedNoTrace(50947);
}
void WiredTigerKVEngine::cleanShutdown() {