summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Hirschhorn <max.hirschhorn@mongodb.com>2020-12-02 17:11:02 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-12-02 22:21:26 +0000
commitd8319b3775e9b6952c32a9c0599fce8ebb0d18c5 (patch)
tree389e8e0d5d63add4ea24832552d334e56c4b59cd
parenta574d23ec0b7d06b8d872bf64136308f541a796d (diff)
downloadmongo-d8319b3775e9b6952c32a9c0599fce8ebb0d18c5.tar.gz
SERVER-53182 Omit "versions" from shardingState cmd when not --shardsvr.
-rw-r--r--jstests/sharding/shardingstate_command_nonshardsvr.js20
-rw-r--r--src/mongo/db/s/sharding_state_command.cpp5
2 files changed, 24 insertions, 1 deletions
diff --git a/jstests/sharding/shardingstate_command_nonshardsvr.js b/jstests/sharding/shardingstate_command_nonshardsvr.js
new file mode 100644
index 00000000000..2aeb8a3de16
--- /dev/null
+++ b/jstests/sharding/shardingstate_command_nonshardsvr.js
@@ -0,0 +1,20 @@
+/**
+ * Tests that the {shardingState: 1} command doesn't return an entry for each collection when
+ * sharding isn't enabled.
+ */
+(function() {
+ "use strict";
+
+ const rst = new ReplSetTest({nodes: 1});
+ rst.startSet();
+ rst.initiate();
+
+ const db = rst.getPrimary().getDB("test");
+ assert.commandWorked(db.runCommand({create: "mycoll"}));
+
+ const res = assert.commandWorked(db.adminCommand({shardingState: 1}));
+ assert(!res.hasOwnProperty("versions"),
+ "unexpectedly found version info about collections: " + tojson(res));
+
+ rst.stopSet();
+})();
diff --git a/src/mongo/db/s/sharding_state_command.cpp b/src/mongo/db/s/sharding_state_command.cpp
index 5c537b63401..85048c09a65 100644
--- a/src/mongo/db/s/sharding_state_command.cpp
+++ b/src/mongo/db/s/sharding_state_command.cpp
@@ -71,7 +71,10 @@ public:
const BSONObj& cmdObj,
BSONObjBuilder& result) override {
ShardingState::get(opCtx)->appendInfo(opCtx, result);
- CollectionShardingState::report(opCtx, &result);
+ const bool isEnabled = ShardingState::get(opCtx)->enabled();
+ if (isEnabled) {
+ CollectionShardingState::report(opCtx, &result);
+ }
return true;
}