diff options
author | Benety Goh <benety@mongodb.com> | 2022-08-26 14:04:18 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-11 12:20:07 +0000 |
commit | 26fc0d8a01086fb47377db6564ea5267cdd00aa6 (patch) | |
tree | a815f24d9da25d4ecb851f9fd0e1c3b649d709b9 /jstests/noPassthrough | |
parent | 02a6f50be29f295d36a8c86f1e3f6c21587bb04d (diff) | |
download | mongo-26fc0d8a01086fb47377db6564ea5267cdd00aa6.tar.gz |
SERVER-68477 add startup warning for TTL indexes with NaN 'expireAfterSeconds'
(partially cherry-picked from commit abdedd367e2f331816354563f8ae95f6bb35c51d)
(cherry picked from commit 5d21e0115edb120873c8beac2901e03a76ccfc00)
Diffstat (limited to 'jstests/noPassthrough')
-rw-r--r-- | jstests/noPassthrough/ttl_expire_nan_warning_on_startup.js | 46 |
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(); +})(); |