diff options
author | Louis Williams <louis.williams@mongodb.com> | 2018-11-02 12:13:32 -0400 |
---|---|---|
committer | Louis Williams <louis.williams@mongodb.com> | 2018-11-05 10:51:59 -0500 |
commit | c7553b861796c1581c85b3cbc4e55dcc9666aa0f (patch) | |
tree | f11b8f91fcc30c90b215a7f42e894aa523c5330c /src | |
parent | 7dbcd710077bc4141e71730be9e12558880375e6 (diff) | |
download | mongo-c7553b861796c1581c85b3cbc4e55dcc9666aa0f.tar.gz |
SERVER-37796 Always salvage WiredTiger metadata regardless of error code when starting with repair
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp | 28 |
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() { |