summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/db/commands/dbcheck.cpp4
-rw-r--r--src/mongo/db/commands/dbcommands.cpp6
-rw-r--r--src/mongo/db/commands/distinct.cpp6
-rw-r--r--src/mongo/db/commands/geo_near_cmd.cpp5
-rw-r--r--src/mongo/db/commands/haystack.cpp4
-rw-r--r--src/mongo/db/commands/list_collections.cpp3
-rw-r--r--src/mongo/db/commands/list_databases.cpp5
-rw-r--r--src/mongo/db/commands/list_indexes.cpp3
-rw-r--r--src/mongo/db/commands/mr.cpp6
-rw-r--r--src/mongo/db/commands/parallel_collection_scan.cpp7
-rw-r--r--src/mongo/db/commands/pipeline_command.cpp4
-rw-r--r--src/mongo/s/commands/cluster_db_stats_cmd.cpp3
-rw-r--r--src/mongo/s/commands/cluster_list_databases_cmd.cpp6
-rw-r--r--src/mongo/s/commands/commands_public.cpp17
-rw-r--r--src/mongo/shell/replsettest.js11
15 files changed, 77 insertions, 13 deletions
diff --git a/src/mongo/db/commands/dbcheck.cpp b/src/mongo/db/commands/dbcheck.cpp
index e462f89250b..219c82051d0 100644
--- a/src/mongo/db/commands/dbcheck.cpp
+++ b/src/mongo/db/commands/dbcheck.cpp
@@ -496,6 +496,10 @@ public:
return false;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
+
virtual bool adminOnly() const {
return false;
}
diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp
index 261b332fc7d..fec001af137 100644
--- a/src/mongo/db/commands/dbcommands.cpp
+++ b/src/mongo/db/commands/dbcommands.cpp
@@ -911,6 +911,9 @@ public:
virtual bool slaveOk() const {
return true;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
virtual bool supportsWriteConcern(const BSONObj& cmd) const override {
return false;
}
@@ -993,6 +996,9 @@ public:
virtual bool slaveOk() const {
return true;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
virtual bool supportsWriteConcern(const BSONObj& cmd) const override {
return false;
}
diff --git a/src/mongo/db/commands/distinct.cpp b/src/mongo/db/commands/distinct.cpp
index 4ce5c7f78eb..483bb4bd037 100644
--- a/src/mongo/db/commands/distinct.cpp
+++ b/src/mongo/db/commands/distinct.cpp
@@ -67,9 +67,9 @@
namespace mongo {
-using std::unique_ptr;
using std::string;
using std::stringstream;
+using std::unique_ptr;
namespace dps = ::mongo::dotted_path_support;
@@ -85,6 +85,10 @@ public:
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
+
virtual bool supportsWriteConcern(const BSONObj& cmd) const override {
return false;
}
diff --git a/src/mongo/db/commands/geo_near_cmd.cpp b/src/mongo/db/commands/geo_near_cmd.cpp
index 5380968b199..97ee8014114 100644
--- a/src/mongo/db/commands/geo_near_cmd.cpp
+++ b/src/mongo/db/commands/geo_near_cmd.cpp
@@ -60,8 +60,8 @@
namespace mongo {
-using std::unique_ptr;
using std::stringstream;
+using std::unique_ptr;
class Geo2dFindNearCmd : public ErrmsgCommandDeprecated {
public:
@@ -76,6 +76,9 @@ public:
bool slaveOverrideOk() const {
return true;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
bool supportsNonLocalReadConcern(const std::string& dbName, const BSONObj& cmdObj) const final {
return true;
}
diff --git a/src/mongo/db/commands/haystack.cpp b/src/mongo/db/commands/haystack.cpp
index 3b00077fe60..5f74b7279a5 100644
--- a/src/mongo/db/commands/haystack.cpp
+++ b/src/mongo/db/commands/haystack.cpp
@@ -78,6 +78,10 @@ public:
return true;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
+
bool supportsNonLocalReadConcern(const std::string& dbName, const BSONObj& cmdObj) const final {
return true;
}
diff --git a/src/mongo/db/commands/list_collections.cpp b/src/mongo/db/commands/list_collections.cpp
index 3509eb6f955..71cccabbdf6 100644
--- a/src/mongo/db/commands/list_collections.cpp
+++ b/src/mongo/db/commands/list_collections.cpp
@@ -205,6 +205,9 @@ public:
virtual bool slaveOverrideOk() const {
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
virtual bool adminOnly() const {
return false;
}
diff --git a/src/mongo/db/commands/list_databases.cpp b/src/mongo/db/commands/list_databases.cpp
index c405b60ac39..0b7e63ddd02 100644
--- a/src/mongo/db/commands/list_databases.cpp
+++ b/src/mongo/db/commands/list_databases.cpp
@@ -65,6 +65,9 @@ public:
virtual bool slaveOverrideOk() const {
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
virtual bool adminOnly() const {
return true;
}
@@ -165,4 +168,4 @@ public:
return true;
}
} cmdListDatabases;
-}
+} // namespace mongo
diff --git a/src/mongo/db/commands/list_indexes.cpp b/src/mongo/db/commands/list_indexes.cpp
index a6391248c0c..53665c8ef34 100644
--- a/src/mongo/db/commands/list_indexes.cpp
+++ b/src/mongo/db/commands/list_indexes.cpp
@@ -84,6 +84,9 @@ public:
virtual bool slaveOverrideOk() const {
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
virtual bool adminOnly() const {
return false;
}
diff --git a/src/mongo/db/commands/mr.cpp b/src/mongo/db/commands/mr.cpp
index ced28109df0..6184ebd2835 100644
--- a/src/mongo/db/commands/mr.cpp
+++ b/src/mongo/db/commands/mr.cpp
@@ -1365,6 +1365,10 @@ public:
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
+
std::size_t reserveBytesForReply() const override {
return FindCommon::kInitReplyBufferSize;
}
@@ -1893,5 +1897,5 @@ public:
} mapReduceFinishCommand;
-} // namespace
+} // namespace mr
} // namespace mongo
diff --git a/src/mongo/db/commands/parallel_collection_scan.cpp b/src/mongo/db/commands/parallel_collection_scan.cpp
index 617bddafd04..1ba05020acb 100644
--- a/src/mongo/db/commands/parallel_collection_scan.cpp
+++ b/src/mongo/db/commands/parallel_collection_scan.cpp
@@ -45,8 +45,8 @@
namespace mongo {
-using std::unique_ptr;
using std::string;
+using std::unique_ptr;
using stdx::make_unique;
namespace {
@@ -64,10 +64,15 @@ public:
virtual bool supportsWriteConcern(const BSONObj& cmd) const override {
return false;
}
+
virtual bool slaveOk() const {
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
+
bool supportsNonLocalReadConcern(const std::string& dbName, const BSONObj& cmdObj) const final {
return true;
}
diff --git a/src/mongo/db/commands/pipeline_command.cpp b/src/mongo/db/commands/pipeline_command.cpp
index bfc5eb99fe1..7eda4ba91a9 100644
--- a/src/mongo/db/commands/pipeline_command.cpp
+++ b/src/mongo/db/commands/pipeline_command.cpp
@@ -71,7 +71,9 @@ public:
const BSONObj& cmdObj) const override {
return !AggregationRequest::parseNs(dbName, cmdObj).isCollectionlessAggregateNS();
}
-
+ bool maintenanceOk() const override {
+ return false;
+ }
ReadWriteType getReadWriteType() const {
return ReadWriteType::kRead;
}
diff --git a/src/mongo/s/commands/cluster_db_stats_cmd.cpp b/src/mongo/s/commands/cluster_db_stats_cmd.cpp
index 9fb71f8aea6..2f787527bda 100644
--- a/src/mongo/s/commands/cluster_db_stats_cmd.cpp
+++ b/src/mongo/s/commands/cluster_db_stats_cmd.cpp
@@ -49,6 +49,9 @@ public:
bool slaveOk() const override {
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
bool adminOnly() const override {
return false;
}
diff --git a/src/mongo/s/commands/cluster_list_databases_cmd.cpp b/src/mongo/s/commands/cluster_list_databases_cmd.cpp
index ffea8595f5a..f5f353ba921 100644
--- a/src/mongo/s/commands/cluster_list_databases_cmd.cpp
+++ b/src/mongo/s/commands/cluster_list_databases_cmd.cpp
@@ -46,9 +46,9 @@
namespace mongo {
-using std::unique_ptr;
using std::map;
using std::string;
+using std::unique_ptr;
using std::vector;
namespace {
@@ -65,6 +65,10 @@ public:
return true;
}
+ virtual bool maintenanceOk() const override {
+ return false;
+ }
+
virtual bool adminOnly() const {
return true;
}
diff --git a/src/mongo/s/commands/commands_public.cpp b/src/mongo/s/commands/commands_public.cpp
index a05f8521dc9..d37d8a33a8d 100644
--- a/src/mongo/s/commands/commands_public.cpp
+++ b/src/mongo/s/commands/commands_public.cpp
@@ -71,15 +71,15 @@
namespace mongo {
-using std::unique_ptr;
-using std::shared_ptr;
using std::list;
using std::make_pair;
using std::map;
using std::multimap;
using std::set;
+using std::shared_ptr;
using std::string;
using std::stringstream;
+using std::unique_ptr;
using std::vector;
namespace {
@@ -1090,6 +1090,10 @@ public:
return false;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
+
bool run(OperationContext* opCtx,
const string& dbName,
const BSONObj& cmdObj,
@@ -1469,7 +1473,7 @@ public:
void help(stringstream& h) const override {
h << "http://dochub.mongodb.org/core/geo#GeospatialIndexing-geoNearCommand";
- }
+ } // namespace
void addRequiredPrivileges(const std::string& dbname,
const BSONObj& cmdObj,
@@ -1608,6 +1612,10 @@ public:
return false;
}
+ bool maintenanceOk() const override {
+ return false;
+ }
+
bool run(OperationContext* opCtx,
const string& dbName,
const BSONObj& cmdObj,
@@ -1623,7 +1631,8 @@ public:
return passthrough(opCtx, dbName, dbInfo.primaryId(), cmdObj, result);
}
-} evalCmd;
+} // namespace mongo
+evalCmd;
class CmdListCollections final : public PublicGridCommand {
public:
diff --git a/src/mongo/shell/replsettest.js b/src/mongo/shell/replsettest.js
index 9b509244681..52573614e29 100644
--- a/src/mongo/shell/replsettest.js
+++ b/src/mongo/shell/replsettest.js
@@ -1558,8 +1558,15 @@ var ReplSetTest = function(opts) {
const replSetConfig =
rst.getReplSetConfigFromNode ? rst.getReplSetConfigFromNode() : undefined;
- rst.liveNodes.slaves.forEach(secondary => {
- secondary.getDBNames().forEach(dbName => combinedDBs.add(dbName));
+ rst.liveNodes.slaves.forEach(node => {
+ // Arbiters have no replicated data.
+ if (node.getDB('admin').isMaster('admin').arbiterOnly) {
+ print("checkDBHashesForReplSet skipping data of arbiter: " + node.host);
+ return;
+ }
+ print("checkDBHashesForReplSet going to check data hashes on secondary: " +
+ node.host);
+ node.getDBNames().forEach(dbName => combinedDBs.add(dbName));
});
for (var dbName of combinedDBs) {