summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2022-08-26 14:04:18 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-11 12:38:00 +0000
commita64f677d8ea94db2147c385829435a3465bff2ae (patch)
tree515edc3780de8d553cd347717d698b53888def20
parent949beadb40c670e6b7d1ac66dcac17916e51725a (diff)
downloadmongo-a64f677d8ea94db2147c385829435a3465bff2ae.tar.gz
SERVER-68477 add test to check startup warning for TTL indexes with NaN 'expireAfterSeconds'
Startup warning was added in 5.0 incommit abdedd367e2f331816354563f8ae95f6bb35c51d. (partially cherry-picked from commit abdedd367e2f331816354563f8ae95f6bb35c51d) (cherry picked from commit 5d21e0115edb120873c8beac2901e03a76ccfc00)
-rw-r--r--jstests/noPassthrough/ttl_expire_nan_warning_on_startup.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/jstests/noPassthrough/ttl_expire_nan_warning_on_startup.js b/jstests/noPassthrough/ttl_expire_nan_warning_on_startup.js
new file mode 100644
index 00000000000..d4b1d41f1fe
--- /dev/null
+++ b/jstests/noPassthrough/ttl_expire_nan_warning_on_startup.js
@@ -0,0 +1,46 @@
+/**
+ * Tests that a server containing a TTL index with NaN for 'expireAfterSeconds'
+ * will log a warning on startup.
+ *
+ * @tags: [
+ * requires_persistence,
+ * requires_replication,
+ * ]
+ */
+(function() {
+'use strict';
+
+load('jstests/noPassthrough/libs/index_build.js');
+
+const rst = new ReplSetTest({nodes: [{}, {rsConfig: {votes: 0, priority: 0}}]});
+rst.startSet();
+rst.initiate();
+
+let primary = rst.getPrimary();
+const db = primary.getDB('test');
+const coll = db.t;
+
+assert.commandWorked(coll.createIndex({t: 1}, {expireAfterSeconds: NaN}));
+assert.commandWorked(coll.insert({_id: 0, t: ISODate()}));
+
+// Force checkpoint in storage engine to ensure index is part of the catalog in
+// in finished state at startup.
+rst.awaitReplication();
+let secondary = rst.getSecondary();
+assert.commandWorked(secondary.adminCommand({fsync: 1}));
+
+// Restart the secondary and check for the startup warning in the logs.
+secondary = rst.restart(secondary);
+rst.waitForState(secondary, ReplSetTest.State.SECONDARY);
+
+// Wait for "Found an existing TTL index with NaN 'expireAfterSeconds' in the catalog" log message.
+checkLog.containsJson(secondary, 6852200, {
+ ns: coll.getFullName(),
+ spec: (spec) => {
+ jsTestLog('TTL index on secondary at startup: ' + tojson(spec));
+ return isNaN(spec.expireAfterSeconds);
+ }
+});
+
+rst.stopSet();
+})();