summaryrefslogtreecommitdiff
path: root/jstests/hooks
diff options
context:
space:
mode:
authorEddie Louie <eddie.louie@mongodb.com>2017-04-17 17:17:01 -0400
committerEddie Louie <eddie.louie@mongodb.com>2017-04-19 13:00:35 -0400
commit41d5d369508592a2c1ebaaaac48fe2b3680e0615 (patch)
tree75391d8af9e28d7a449b74b8d16ade04a0983889 /jstests/hooks
parent673b1087be8de04776870e75a3d74b39bf373b7e (diff)
downloadmongo-41d5d369508592a2c1ebaaaac48fe2b3680e0615.tar.gz
SERVER-28501 validate_collections.js hook should tolerate KeyTooLong error response when forcing featureCompatibilityVersion
Diffstat (limited to 'jstests/hooks')
-rw-r--r--jstests/hooks/validate_collections.js25
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;