diff options
author | Eddie Louie <eddie.louie@mongodb.com> | 2017-04-17 17:17:01 -0400 |
---|---|---|
committer | Eddie Louie <eddie.louie@mongodb.com> | 2017-04-19 13:00:35 -0400 |
commit | 41d5d369508592a2c1ebaaaac48fe2b3680e0615 (patch) | |
tree | 75391d8af9e28d7a449b74b8d16ade04a0983889 | |
parent | 673b1087be8de04776870e75a3d74b39bf373b7e (diff) | |
download | mongo-41d5d369508592a2c1ebaaaac48fe2b3680e0615.tar.gz |
SERVER-28501 validate_collections.js hook should tolerate KeyTooLong error response when forcing featureCompatibilityVersion
-rw-r--r-- | jstests/hooks/validate_collections.js | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/jstests/hooks/validate_collections.js b/jstests/hooks/validate_collections.js index aeb38a98bf5..3288f5ec5b6 100644 --- a/jstests/hooks/validate_collections.js +++ b/jstests/hooks/validate_collections.js @@ -22,8 +22,13 @@ function validateCollections(db, obj) { } function setFeatureCompatibilityVersion(adminDB, version) { - assert.commandWorked(adminDB.runCommand({setFeatureCompatibilityVersion: version})); + var res = adminDB.runCommand({setFeatureCompatibilityVersion: version}); + if (!res.ok) { + return res; + } + assert.eq(version, getFeatureCompatibilityVersion(adminDB)); + return res; } assert.eq(typeof db, 'object', 'Invalid `db` object, is the shell connected to a mongod?'); @@ -56,8 +61,21 @@ function validateCollections(db, obj) { } } - setFeatureCompatibilityVersion( + var res = setFeatureCompatibilityVersion( adminDB, jsTest.options().forceValidationWithFeatureCompatibilityVersion); + // Bypass collections validation when setFeatureCompatibilityVersion fails with KeyTooLong + // while forcing feature compatibility version. The KeyTooLong error response occurs as a + // result of having a document with a large "version" field in the admin.system.version + // collection. + if (!res.ok && jsTest.options().forceValidationWithFeatureCompatibilityVersion === "3.4") { + print("Skipping collection validation since forcing the featureCompatibilityVersion" + + " to 3.4 failed"); + assert.commandFailedWithCode(res, ErrorCodes.KeyTooLong); + success = true; + return success; + } else { + assert.commandWorked(res); + } } // Don't run validate on view namespaces. @@ -85,7 +103,8 @@ function validateCollections(db, obj) { // Restore the original value for featureCompatibilityVersion. if (jsTest.options().forceValidationWithFeatureCompatibilityVersion) { - setFeatureCompatibilityVersion(adminDB, originalFeatureCompatibilityVersion); + assert.commandWorked( + setFeatureCompatibilityVersion(adminDB, originalFeatureCompatibilityVersion)); } return success; |