summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@10gen.com>2020-07-31 16:34:50 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-08-04 14:19:00 +0000
commitce617fa26c59551e93f3950353352ecabee38b44 (patch)
tree7d8d741a0652c5fcec1154a5c42d4312a1ff2f9a
parentfe4adf0f03a9a5b5340a3c10352c032877388c9b (diff)
downloadmongo-ce617fa26c59551e93f3950353352ecabee38b44.tar.gz
SERVER-50060 Make oplog_slow_sampling_logging.js tolerant to small changes in the clock. Also make it faster by using batch operations.
-rw-r--r--jstests/replsets/oplog_slow_sampling_logging.js24
1 files changed, 20 insertions, 4 deletions
diff --git a/jstests/replsets/oplog_slow_sampling_logging.js b/jstests/replsets/oplog_slow_sampling_logging.js
index a2bf9ed17f9..1fbe932bafe 100644
--- a/jstests/replsets/oplog_slow_sampling_logging.js
+++ b/jstests/replsets/oplog_slow_sampling_logging.js
@@ -9,9 +9,16 @@
(function() {
"use strict";
-const kOplogDocs = 45000;
+const kOplogDocs = 47500;
// kNumOplogSamples is derived from the number of oplog entries above.
-const kNumOplogSamples = 15;
+// Formula is kRandomSamplesPerStone * numRecords / estRecordsPerStone, where
+// kRandomSamplesPerStone = 10
+// numRecords = kOplogDocs + some small number of bookkeeping records
+// estRecordsPerStone = (16MB / average oplog record size), empirically about 28700 records.
+// The number of samples is picked to NOT be divisible by kLoggingIntervalSeconds so we can
+// safely miss a logging interval without failing; this can sometimes happen due to clock
+// adjustment.
+const kNumOplogSamples = 16;
const kOplogSampleReadDelay = 1;
const kLoggingIntervalSeconds = 3;
@@ -35,8 +42,17 @@ replSet.initiate();
let coll = replSet.getPrimary().getDB(testDB).getCollection("testcoll");
// Insert enough documents to force kNumOplogSamples to be taken on the following start up.
-for (let i = 0; i < kOplogDocs; i++) {
- assert.commandWorked(coll.insert({m: 1 + i}));
+let docsRemaining = kOplogDocs;
+let docsDone = 0;
+while (docsRemaining) {
+ let batchDocs = docsRemaining > 1000 ? 1000 : docsRemaining;
+ let bulk = coll.initializeUnorderedBulkOp();
+ for (let i = 0; i < batchDocs; i++) {
+ bulk.insert({m: 1 + i + docsDone});
+ }
+ assert.commandWorked(bulk.execute());
+ docsRemaining -= batchDocs;
+ docsDone += batchDocs;
}
// Restart replica set to load entries from the oplog for sampling.