From 635897bdc5276db6f32a0a347644813b753644f4 Mon Sep 17 00:00:00 2001 From: Adam Midvidy Date: Fri, 15 May 2015 19:22:41 -0400 Subject: SERVER-17607 initial OP_COMMAND mongod implementation --- src/mongo/db/commands/explain_cmd.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/mongo/db/commands/explain_cmd.cpp') 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; -- cgit v1.2.1