summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWilliam Schultz <william.schultz@mongodb.com>2017-06-05 14:28:12 -0400
committerEric Milkie <milkie@10gen.com>2017-06-14 09:23:53 -0400
commit06d23a1215d33f3e2262a5a17d458e94ba563576 (patch)
tree336596a414f8430facf873a8b980ff2dd399a2a6 /src
parent34d292df70c97fadbac07296dea3cb04b6021a4d (diff)
downloadmongo-06d23a1215d33f3e2262a5a17d458e94ba563576.tar.gz
SERVER-29240 Add test to ensure valid index creation for capped collections during
initial sync (cherry picked from commit 2daa02b7294412f2d5f2b7f224ef94f290f12f12)
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/repl/collection_cloner.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mongo/db/repl/collection_cloner.cpp b/src/mongo/db/repl/collection_cloner.cpp
index a274ab98f24..9dc3674efa0 100644
--- a/src/mongo/db/repl/collection_cloner.cpp
+++ b/src/mongo/db/repl/collection_cloner.cpp
@@ -73,6 +73,10 @@ MONGO_EXPORT_SERVER_PARAMETER(numInitialSyncListIndexesAttempts, int, 3);
MONGO_EXPORT_SERVER_PARAMETER(numInitialSyncCollectionFindAttempts, int, 3);
} // namespace
+// Failpoint which causes initial sync to hang after the initial 'find' command of collection
+// cloning, for a specific collection.
+MONGO_FP_DECLARE(initialSyncHangCollectionClonerAfterInitialFind);
+
CollectionCloner::CollectionCloner(executor::TaskExecutor* executor,
OldThreadPool* dbWorkThreadPool,
const HostAndPort& source,
@@ -443,6 +447,20 @@ void CollectionCloner::_findCallback(const StatusWith<Fetcher::QueryResponse>& f
return;
}
+ MONGO_FAIL_POINT_BLOCK(initialSyncHangCollectionClonerAfterInitialFind, nssData) {
+ const BSONObj& data = nssData.getData();
+ auto nss = data["nss"].str();
+ // Only hang when cloning the specified collection.
+ if (_destNss.toString() == nss) {
+ while (MONGO_FAIL_POINT(initialSyncHangCollectionClonerAfterInitialFind) &&
+ !_isShuttingDown()) {
+ log() << "initialSyncHangCollectionClonerAfterInitialFind fail point enabled for "
+ << nss << ". Blocking until fail point is disabled.";
+ mongo::sleepsecs(1);
+ }
+ }
+ }
+
if (!lastBatch) {
invariant(getMoreBob);
getMoreBob->append("getMore", batchData.cursorId);