diff options
author | Benety Goh <benety@mongodb.com> | 2015-06-07 20:49:34 -0400 |
---|---|---|
committer | Benety Goh <benety@mongodb.com> | 2015-06-09 19:03:03 -0400 |
commit | 7a051310660319f3fc33b85722a206a11fa20309 (patch) | |
tree | c2ff91734c49ad08fad38ba345f2bb2f0823b2e0 /src/mongo/db/catalog | |
parent | 23628bdf724248a28bb73f6a1b647139ca09e465 (diff) | |
download | mongo-7a051310660319f3fc33b85722a206a11fa20309.tar.gz |
SERVER-18807 modified ReplicationCoordinator::canAcceptWritesForDatabases to accept a namespace instead of a database name
Diffstat (limited to 'src/mongo/db/catalog')
-rw-r--r-- | src/mongo/db/catalog/capped_utils.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/catalog/coll_mod.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/catalog/create_collection.cpp | 15 | ||||
-rw-r--r-- | src/mongo/db/catalog/drop_collection.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/catalog/drop_indexes.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/catalog/rename_collection.cpp | 2 |
6 files changed, 15 insertions, 14 deletions
diff --git a/src/mongo/db/catalog/capped_utils.cpp b/src/mongo/db/catalog/capped_utils.cpp index 19455f94e90..2b046a64d39 100644 --- a/src/mongo/db/catalog/capped_utils.cpp +++ b/src/mongo/db/catalog/capped_utils.cpp @@ -57,8 +57,8 @@ namespace mongo { AutoGetDb autoDb(txn, collectionName.db(), MODE_X); bool userInitiatedWritesAndNotPrimary = txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase( - collectionName.db()); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor( + collectionName); if (userInitiatedWritesAndNotPrimary) { return Status(ErrorCodes::NotMaster, @@ -226,7 +226,7 @@ namespace mongo { AutoGetDb autoDb(txn, collectionName.db(), MODE_X); bool userInitiatedWritesAndNotPrimary = txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(dbname); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor(collectionName); if (userInitiatedWritesAndNotPrimary) { return Status(ErrorCodes::NotMaster, diff --git a/src/mongo/db/catalog/coll_mod.cpp b/src/mongo/db/catalog/coll_mod.cpp index 264f47cf417..768ee713b0a 100644 --- a/src/mongo/db/catalog/coll_mod.cpp +++ b/src/mongo/db/catalog/coll_mod.cpp @@ -58,7 +58,7 @@ namespace mongo { OldClientContext ctx(txn, ns); bool userInitiatedWritesAndNotPrimary = txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(dbName); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor(ns); if (userInitiatedWritesAndNotPrimary) { return Status(ErrorCodes::NotMaster, diff --git a/src/mongo/db/catalog/create_collection.cpp b/src/mongo/db/catalog/create_collection.cpp index 202bde1b52b..aaff88c3121 100644 --- a/src/mongo/db/catalog/create_collection.cpp +++ b/src/mongo/db/catalog/create_collection.cpp @@ -34,6 +34,7 @@ #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/curop.h" #include "mongo/db/db_raii.h" +#include "mongo/db/namespace_string.h" #include "mongo/db/operation_context.h" #include "mongo/db/ops/insert.h" #include "mongo/db/repl/replication_coordinator_global.h" @@ -55,7 +56,7 @@ namespace mongo { return status; } - const std::string ns = dbName + '.' + firstElt.valuestrsafe(); + NamespaceString nss(dbName, firstElt.valuestrsafe()); // Build options object from remaining cmdObj elements. BSONObjBuilder optionsBuilder; @@ -72,23 +73,23 @@ namespace mongo { MONGO_WRITE_CONFLICT_RETRY_LOOP_BEGIN { ScopedTransaction transaction(txn, MODE_IX); Lock::DBLock dbXLock(txn->lockState(), dbName, MODE_X); - OldClientContext ctx(txn, ns); + OldClientContext ctx(txn, nss.ns()); if (txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(dbName)) { - return Status(ErrorCodes::NotMaster, - str::stream() << "Not primary while creating collection " << ns); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor(nss)) { + return Status(ErrorCodes::NotMaster, str::stream() << + "Not primary while creating collection " << nss.ns()); } WriteUnitOfWork wunit(txn); // Create collection. - status = userCreateNS(txn, ctx.db(), ns.c_str(), options); + status = userCreateNS(txn, ctx.db(), nss.ns(), options); if (!status.isOK()) { return status; } wunit.commit(); - } MONGO_WRITE_CONFLICT_RETRY_LOOP_END(txn, "create", ns); + } MONGO_WRITE_CONFLICT_RETRY_LOOP_END(txn, "create", nss.ns()); return Status::OK(); } } // namespace mongo diff --git a/src/mongo/db/catalog/drop_collection.cpp b/src/mongo/db/catalog/drop_collection.cpp index d1d5fa5c986..cb932432dab 100644 --- a/src/mongo/db/catalog/drop_collection.cpp +++ b/src/mongo/db/catalog/drop_collection.cpp @@ -71,7 +71,7 @@ namespace mongo { OldClientContext context(txn, collectionName); bool userInitiatedWritesAndNotPrimary = txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(dbname); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor(collectionName); if (userInitiatedWritesAndNotPrimary) { return Status(ErrorCodes::NotMaster, diff --git a/src/mongo/db/catalog/drop_indexes.cpp b/src/mongo/db/catalog/drop_indexes.cpp index aeedac83c3f..344b247290a 100644 --- a/src/mongo/db/catalog/drop_indexes.cpp +++ b/src/mongo/db/catalog/drop_indexes.cpp @@ -140,7 +140,7 @@ namespace { AutoGetDb autoDb(txn, dbName, MODE_X); bool userInitiatedWritesAndNotPrimary = txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(dbName); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor(ns); if (userInitiatedWritesAndNotPrimary) { return Status(ErrorCodes::NotMaster, diff --git a/src/mongo/db/catalog/rename_collection.cpp b/src/mongo/db/catalog/rename_collection.cpp index ebff993ab42..9c73d968e37 100644 --- a/src/mongo/db/catalog/rename_collection.cpp +++ b/src/mongo/db/catalog/rename_collection.cpp @@ -73,7 +73,7 @@ namespace { OldClientContext ctx(txn, source); bool userInitiatedWritesAndNotPrimary = txn->writesAreReplicated() && - !repl::getGlobalReplicationCoordinator()->canAcceptWritesForDatabase(source.db()); + !repl::getGlobalReplicationCoordinator()->canAcceptWritesFor(source); if (userInitiatedWritesAndNotPrimary) { return Status(ErrorCodes::NotMaster, str::stream() |