summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morrow <acm@mongodb.com>2019-07-21 17:20:33 -0400
committerAndrew Morrow <acm@mongodb.com>2019-08-28 18:34:19 -0400
commit4ebd59eb450fc1a693472bca6df7ee353af4afec (patch)
tree49473d3815af5f4cc91afd330a2fd699388a4803
parent7fbb8c5c17f457b8c28ecfa03b4083ce9fe0e8d9 (diff)
downloadmongo-4ebd59eb450fc1a693472bca6df7ee353af4afec.tar.gz
SERVER-42257 Announce known emulations
(cherry picked from commit 0789a935ccee8e402cce8c7cdf52a41b9cc17010) (cherry picked from commit 9d796ee7c61a783c0b553bf715461864ba5f6fcb)
-rw-r--r--src/mongo/shell/dbshell.cpp6
-rw-r--r--src/mongo/shell/utils.js45
2 files changed, 51 insertions, 0 deletions
diff --git a/src/mongo/shell/dbshell.cpp b/src/mongo/shell/dbshell.cpp
index 30b1ff718f2..1987538e20d 100644
--- a/src/mongo/shell/dbshell.cpp
+++ b/src/mongo/shell/dbshell.cpp
@@ -917,6 +917,12 @@ int _main(int argc, char* argv[], char** envp) {
false,
true,
false);
+
+ scope->exec("shellHelper( 'show', 'nonGenuineMongoDBCheck' )",
+ "(nonGenuineMongoDBCheck)",
+ false,
+ true,
+ false);
}
shellHistoryInit();
diff --git a/src/mongo/shell/utils.js b/src/mongo/shell/utils.js
index d45beb0d675..847f65c6196 100644
--- a/src/mongo/shell/utils.js
+++ b/src/mongo/shell/utils.js
@@ -948,6 +948,51 @@ shellHelper.show = function(what) {
}
}
+ if (what == "nonGenuineMongoDBCheck") {
+ let matchesKnownImposterSignature = false;
+
+ // A MongoDB emulation service offered by a company
+ // responsible for a certain disk operating system.
+ try {
+ const buildInfo = db.runCommand({buildInfo: 1});
+ if (buildInfo.hasOwnProperty('_t')) {
+ matchesKnownImposterSignature = true;
+ }
+ } catch (e) {
+ // Don't do anything here. Just throw the error away.
+ }
+
+ // A MongoDB emulation service offered by a company named
+ // after some sort of minor river or something.
+ if (!matchesKnownImposterSignature) {
+ try {
+ const cmdLineOpts = db.adminCommand({getCmdLineOpts: 1});
+ if (cmdLineOpts.hasOwnProperty('errmsg') &&
+ cmdLineOpts.errmsg.indexOf('not supported') !== -1) {
+ matchesKnownImposterSignature = true;
+ }
+ } catch (e) {
+ // Don't do anything here. Just throw the error away.
+ }
+ }
+
+ if (matchesKnownImposterSignature) {
+ print("\n" + "Warning: Non-Genuine MongoDB Detected\n\n" +
+
+ "This server or service appears to be an emulation of MongoDB " +
+ "rather than an official MongoDB product.\n\n" +
+
+ "Some documented MongoDB features may work differently, " +
+ "be entirely missing or incomplete, " +
+ "or have unexpected performance characteristics.\n\n" +
+
+ "To learn more please visit: " +
+ "https://dochub.mongodb.org/core/non-genuine-mongodb-server-warning.\n");
+ }
+
+ return "";
+ }
+
throw Error("don't know how to show [" + what + "]");
};