diff options
author | Eric Milkie <milkie@10gen.com> | 2014-10-15 10:17:21 -0400 |
---|---|---|
committer | Eric Milkie <milkie@10gen.com> | 2014-11-24 17:01:58 -0500 |
commit | a724bbb7eb6c046887c1a61516f273cef652f29c (patch) | |
tree | 9a7844b12fde41b135d8fd2f8b919f3ca2e187f3 | |
parent | 24037e138350ca04e2484468978f58355bf1bb96 (diff) | |
download | mongo-a724bbb7eb6c046887c1a61516f273cef652f29c.tar.gz |
SERVER-12061 optionally abort cloner when corruption detected from source
(cherry picked from commit 6556243ff038a3f9cdc52e6a97684203c8c9ec54)
Conflicts:
src/mongo/db/cloner.cpp
-rw-r--r-- | src/mongo/db/cloner.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mongo/db/cloner.cpp b/src/mongo/db/cloner.cpp index b7c029452e7..6986cc126d1 100644 --- a/src/mongo/db/cloner.cpp +++ b/src/mongo/db/cloner.cpp @@ -51,11 +51,14 @@ #include "mongo/db/repl/oplog.h" #include "mongo/db/repl/oplogreader.h" #include "mongo/db/pdfile.h" +#include "mongo/db/server_parameters.h" #include "mongo/db/storage_options.h" #include "mongo/db/catalog/collection.h" namespace mongo { + MONGO_EXPORT_SERVER_PARAMETER(skipCorruptDocumentsWhenCloning, bool, false); + BSONElement getErrField(const BSONObj& o); /** Selectively release the mutex based on a parameter. */ @@ -163,9 +166,14 @@ namespace mongo { /* assure object is valid. note this will slow us down a little. */ const Status status = validateBSON(tmp.objdata(), tmp.objsize()); if (!status.isOK()) { - out() << "Cloner: skipping corrupt object from " << from_collection + str::stream ss; + ss << "Cloner: found corrupt document in " << from_collection << ": " << status.reason(); - continue; + if (skipCorruptDocumentsWhenCloning) { + warning() << ss.ss.str() << "; skipping"; + continue; + } + uasserted(28530, ss); } ++numSeen; |