summaryrefslogtreecommitdiff
path: root/src/mongo/s
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2015-02-03 17:13:01 -0500
committerBenety Goh <benety@mongodb.com>2015-02-05 00:18:34 -0500
commit1e58c0374677a37c09438aa8c21d745cd5b08468 (patch)
tree805eb3c064b76e2612cbd3fe7e90032f380a08e9 /src/mongo/s
parent5ee9c2eafe66f72c1f5d28a764bd729aa24be472 (diff)
downloadmongo-1e58c0374677a37c09438aa8c21d745cd5b08468.tar.gz
SERVER-15308 SERVER-17150 cancel current command on the primary when the node is stepped down
Diffstat (limited to 'src/mongo/s')
-rw-r--r--src/mongo/s/d_migrate.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mongo/s/d_migrate.cpp b/src/mongo/s/d_migrate.cpp
index e416e726dd6..22611714860 100644
--- a/src/mongo/s/d_migrate.cpp
+++ b/src/mongo/s/d_migrate.cpp
@@ -1942,6 +1942,14 @@ namespace mongo {
ScopedTransaction transaction(txn, MODE_IX);
Lock::DBLock lk(txn->lockState(), nsToDatabaseSubstring(ns), MODE_X);
Client::Context ctx(txn, ns);
+ if (!repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(
+ nsToDatabaseSubstring(ns))) {
+ errmsg = str::stream() << "Not primary during migration: " << ns;
+ warning() << errmsg;
+ setState(FAIL);
+ return;
+ }
+
Database* db = ctx.db();
Collection* collection = db->getCollection( ns );
if ( !collection ) {