diff options
author | Adam Midvidy <amidvidy@gmail.com> | 2015-05-15 19:22:41 -0400 |
---|---|---|
committer | Adam Midvidy <amidvidy@gmail.com> | 2015-05-18 21:09:07 -0400 |
commit | 635897bdc5276db6f32a0a347644813b753644f4 (patch) | |
tree | 1e136351522275b835bcf3d742d8b068a3002a30 /src/mongo/db/commands/explain_cmd.cpp | |
parent | 43dedc33efa736e91d3389d9a972c93fef78e06a (diff) | |
download | mongo-635897bdc5276db6f32a0a347644813b753644f4.tar.gz |
SERVER-17607 initial OP_COMMAND mongod implementation
Diffstat (limited to 'src/mongo/db/commands/explain_cmd.cpp')
-rw-r--r-- | src/mongo/db/commands/explain_cmd.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mongo/db/commands/explain_cmd.cpp b/src/mongo/db/commands/explain_cmd.cpp index b7184152110..dc8c06de588 100644 --- a/src/mongo/db/commands/explain_cmd.cpp +++ b/src/mongo/db/commands/explain_cmd.cpp @@ -90,10 +90,16 @@ namespace mongo { // copied from Command::execCommand and should be abstracted. Until then, make // sure to keep it up to date. repl::ReplicationCoordinator* replCoord = repl::getGlobalReplicationCoordinator(); - const bool canRunHere = - replCoord->canAcceptWritesForDatabase(dbname) || - commToExplain->slaveOk() || - (commToExplain->slaveOverrideOk() && (options & QueryOption_SlaveOk)); + bool iAmPrimary = replCoord->canAcceptWritesForDatabase(dbname); + bool commandCanRunOnSecondary = commToExplain->slaveOk(); + bool commandIsOverriddenToRunOnSecondary = commToExplain->slaveOverrideOk() && + ((options & QueryOption_SlaveOk) || Query::hasReadPreference(explainObj)); + bool iAmStandalone = !txn->writesAreReplicated(); + + const bool canRunHere = iAmPrimary || + commandCanRunOnSecondary || + commandIsOverriddenToRunOnSecondary || + iAmStandalone; if (!canRunHere) { mongoutils::str::stream ss; |