diff options
author | Maddie Zechar <mez2113@columbia.edu> | 2021-06-21 15:03:37 +0000 |
---|---|---|
committer | Maddie Zechar <mez2113@columbia.edu> | 2021-06-25 15:31:21 +0000 |
commit | 9d535c51e86246b21a2ca3f36fcde418020c40e4 (patch) | |
tree | 9bfcb15035d6f396cd548f8547460a0d9bdc27d5 | |
parent | 996f8eb8f5540143790df5cff7f761f82e30444d (diff) | |
download | mongo-9d535c51e86246b21a2ca3f36fcde418020c40e4.tar.gz |
SERVER-55444: APIStrictError directs user to docs for migration suggestions
-rw-r--r-- | jstests/core/api_version_parameters.js | 6 | ||||
-rw-r--r-- | src/mongo/db/initialize_api_parameters.cpp | 14 |
2 files changed, 15 insertions, 5 deletions
diff --git a/jstests/core/api_version_parameters.js b/jstests/core/api_version_parameters.js index b91a9bbc5c5..ab38eefa9cc 100644 --- a/jstests/core/api_version_parameters.js +++ b/jstests/core/api_version_parameters.js @@ -69,6 +69,12 @@ assert.commandFailedWithCode( ErrorCodes.APIDeprecationError, "Provided apiDeprecationErrors: true, but the invoked command's deprecatedApiVersions() does not include \"1\""); +// Assert APIStrictError message for unsupported commands contains link to docs site +var err = assert.commandFailedWithCode( + db.runCommand({buildInfo: 1, apiStrict: true, apiVersion: "1"}), ErrorCodes.APIStrictError); +assert.includes(err.errmsg, 'buildInfo'); +assert.includes(err.errmsg, 'dochub.mongodb.org'); + // Test writing to system.js fails. assert.commandFailedWithCode( db.runCommand({ diff --git a/src/mongo/db/initialize_api_parameters.cpp b/src/mongo/db/initialize_api_parameters.cpp index 812a452ea31..dc55104d1fb 100644 --- a/src/mongo/db/initialize_api_parameters.cpp +++ b/src/mongo/db/initialize_api_parameters.cpp @@ -70,12 +70,16 @@ const APIParametersFromClient initializeAPIParameters(const BSONObj& requestBody if (apiParamsFromClient.getApiStrict().get_value_or(false)) { auto cmdApiVersions = command->apiVersions(); auto apiVersionFromClient = apiParamsFromClient.getApiVersion().value().toString(); - bool strictAssert = (cmdApiVersions.find(apiVersionFromClient) != cmdApiVersions.end()); - uassert(ErrorCodes::APIStrictError, - str::stream() << "Provided apiStrict:true, but the command " << command->getName() - << " is not in API Version " << apiVersionFromClient, - strictAssert); + uassert( + ErrorCodes::APIStrictError, + str::stream() << "Provided apiStrict:true, but the command " << command->getName() + << " is not in API Version " << apiVersionFromClient + << ". Information on supported commands and migrations in API Version " + << apiVersionFromClient + << " can be found at " + "https://dochub.mongodb.org/core/manual-versioned-api", + strictAssert); bool strictDoesntWriteToSystemJS = !(command->getReadWriteType() == BasicCommand::ReadWriteType::kWrite && requestBody.firstElementType() == BSONType::String && |