summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaddie Zechar <mez2113@columbia.edu>2021-06-21 15:03:37 +0000
committerMaddie Zechar <mez2113@columbia.edu>2021-06-25 15:31:21 +0000
commit9d535c51e86246b21a2ca3f36fcde418020c40e4 (patch)
tree9bfcb15035d6f396cd548f8547460a0d9bdc27d5
parent996f8eb8f5540143790df5cff7f761f82e30444d (diff)
downloadmongo-9d535c51e86246b21a2ca3f36fcde418020c40e4.tar.gz
SERVER-55444: APIStrictError directs user to docs for migration suggestions
-rw-r--r--jstests/core/api_version_parameters.js6
-rw-r--r--src/mongo/db/initialize_api_parameters.cpp14
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 &&