summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2019-07-19 14:24:23 -0400
committerBenety Goh <benety@mongodb.com>2019-07-19 14:24:55 -0400
commitca03514b54e97e6b66e5344a35be3e003d4e9fc8 (patch)
tree929c92afb37a47f4aed6a47e1d1279fddf013ad4 /src/mongo/db
parentd69f63be5b41b5fb26abb54f8dd60c850b70072e (diff)
downloadmongo-ca03514b54e97e6b66e5344a35be3e003d4e9fc8.tar.gz
SERVER-42280 add db name argument to IndexBuildsCoordinator::startIndexBuild() and _registerAndSetUpIndexBuild()
This sets ReplIndexBuildState::dbName using the db name provided to startIndexBuild() rather than deriving from the CollectionCatalog lookup result.
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/commands/create_indexes.cpp2
-rw-r--r--src/mongo/db/index_builds_coordinator.cpp3
-rw-r--r--src/mongo/db/index_builds_coordinator.h2
-rw-r--r--src/mongo/db/index_builds_coordinator_mongod.cpp3
-rw-r--r--src/mongo/db/index_builds_coordinator_mongod.h1
-rw-r--r--src/mongo/db/index_builds_coordinator_mongod_test.cpp18
-rw-r--r--src/mongo/db/repl/oplog.cpp2
-rw-r--r--src/mongo/db/system_index.cpp1
8 files changed, 29 insertions, 3 deletions
diff --git a/src/mongo/db/commands/create_indexes.cpp b/src/mongo/db/commands/create_indexes.cpp
index 6d0a870a691..8ca80adf742 100644
--- a/src/mongo/db/commands/create_indexes.cpp
+++ b/src/mongo/db/commands/create_indexes.cpp
@@ -661,7 +661,7 @@ bool runCreateIndexesWithCoordinator(OperationContext* opCtx,
try {
auto buildIndexFuture = uassertStatusOK(indexBuildsCoord->startIndexBuild(
- opCtx, *collectionUUID, specs, buildUUID, protocol, indexBuildOptions));
+ opCtx, dbname, *collectionUUID, specs, buildUUID, protocol, indexBuildOptions));
auto deadline = opCtx->getDeadline();
// Date_t::max() means no deadline.
diff --git a/src/mongo/db/index_builds_coordinator.cpp b/src/mongo/db/index_builds_coordinator.cpp
index a3a480e45c1..7df642c47d4 100644
--- a/src/mongo/db/index_builds_coordinator.cpp
+++ b/src/mongo/db/index_builds_coordinator.cpp
@@ -538,6 +538,7 @@ void IndexBuildsCoordinator::_unregisterIndexBuild(
StatusWith<boost::optional<SharedSemiFuture<ReplIndexBuildState::IndexCatalogStats>>>
IndexBuildsCoordinator::_registerAndSetUpIndexBuild(
OperationContext* opCtx,
+ StringData dbName,
CollectionUUID collectionUUID,
const std::vector<BSONObj>& specs,
const UUID& buildUUID,
@@ -598,7 +599,7 @@ IndexBuildsCoordinator::_registerAndSetUpIndexBuild(
}
auto replIndexBuildState = std::make_shared<ReplIndexBuildState>(
- buildUUID, collectionUUID, nss->db().toString(), filteredSpecs, protocol, commitQuorum);
+ buildUUID, collectionUUID, dbName.toString(), filteredSpecs, protocol, commitQuorum);
replIndexBuildState->stats.numIndexesBefore = _getNumIndexesTotal(opCtx, collection);
Status status = _registerIndexBuild(lk, replIndexBuildState);
diff --git a/src/mongo/db/index_builds_coordinator.h b/src/mongo/db/index_builds_coordinator.h
index 2a502c5dfff..b7040be5ba0 100644
--- a/src/mongo/db/index_builds_coordinator.h
+++ b/src/mongo/db/index_builds_coordinator.h
@@ -111,6 +111,7 @@ public:
*/
virtual StatusWith<SharedSemiFuture<ReplIndexBuildState::IndexCatalogStats>> startIndexBuild(
OperationContext* opCtx,
+ StringData dbName,
CollectionUUID collectionUUID,
const std::vector<BSONObj>& specs,
const UUID& buildUUID,
@@ -338,6 +339,7 @@ protected:
*/
StatusWith<boost::optional<SharedSemiFuture<ReplIndexBuildState::IndexCatalogStats>>>
_registerAndSetUpIndexBuild(OperationContext* opCtx,
+ StringData dbName,
CollectionUUID collectionUUID,
const std::vector<BSONObj>& specs,
const UUID& buildUUID,
diff --git a/src/mongo/db/index_builds_coordinator_mongod.cpp b/src/mongo/db/index_builds_coordinator_mongod.cpp
index a0e20599e65..3e5a8e9937c 100644
--- a/src/mongo/db/index_builds_coordinator_mongod.cpp
+++ b/src/mongo/db/index_builds_coordinator_mongod.cpp
@@ -89,13 +89,14 @@ void IndexBuildsCoordinatorMongod::shutdown() {
StatusWith<SharedSemiFuture<ReplIndexBuildState::IndexCatalogStats>>
IndexBuildsCoordinatorMongod::startIndexBuild(OperationContext* opCtx,
+ StringData dbName,
CollectionUUID collectionUUID,
const std::vector<BSONObj>& specs,
const UUID& buildUUID,
IndexBuildProtocol protocol,
IndexBuildOptions indexBuildOptions) {
auto statusWithOptionalResult = _registerAndSetUpIndexBuild(
- opCtx, collectionUUID, specs, buildUUID, protocol, indexBuildOptions.commitQuorum);
+ opCtx, dbName, collectionUUID, specs, buildUUID, protocol, indexBuildOptions.commitQuorum);
if (!statusWithOptionalResult.isOK()) {
return statusWithOptionalResult.getStatus();
}
diff --git a/src/mongo/db/index_builds_coordinator_mongod.h b/src/mongo/db/index_builds_coordinator_mongod.h
index e7d5df355d4..b653f9ef08f 100644
--- a/src/mongo/db/index_builds_coordinator_mongod.h
+++ b/src/mongo/db/index_builds_coordinator_mongod.h
@@ -71,6 +71,7 @@ public:
*/
StatusWith<SharedSemiFuture<ReplIndexBuildState::IndexCatalogStats>> startIndexBuild(
OperationContext* opCtx,
+ StringData dbName,
CollectionUUID collectionUUID,
const std::vector<BSONObj>& specs,
const UUID& buildUUID,
diff --git a/src/mongo/db/index_builds_coordinator_mongod_test.cpp b/src/mongo/db/index_builds_coordinator_mongod_test.cpp
index 5dd6938f730..fab73dd5224 100644
--- a/src/mongo/db/index_builds_coordinator_mongod_test.cpp
+++ b/src/mongo/db/index_builds_coordinator_mongod_test.cpp
@@ -108,6 +108,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, AttemptBuildSameIndexReturnsImmediateSu
// Register an index build on _testFooNss.
auto testFoo1Future =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"a", "b"}),
UUID::gen(),
@@ -117,6 +118,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, AttemptBuildSameIndexReturnsImmediateSu
// Attempt and fail to register an index build on _testFooNss with the same index name, while
// the prior build is still running.
auto readyFuture = assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"b"}),
UUID::gen(),
@@ -141,6 +143,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, Registration) {
// Register an index build on _testFooNss.
auto testFoo1Future =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"a", "b"}),
UUID::gen(),
@@ -160,6 +163,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, Registration) {
// Register a second index build on _testFooNss.
auto testFoo2Future =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"c", "d"}),
UUID::gen(),
@@ -179,6 +183,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, Registration) {
// Register an index build on a different collection _testBarNss.
auto testBarFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testBarNss.db(),
_testBarUUID,
makeSpecs(_testBarNss, {"x", "y"}),
UUID::gen(),
@@ -198,6 +203,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, Registration) {
// Register an index build on a collection in a different database _othertestFoo.
auto othertestFooFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _othertestFooNss.db(),
_othertestFooUUID,
makeSpecs(_othertestFooNss, {"r", "s"}),
UUID::gen(),
@@ -260,6 +266,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
ASSERT_EQ(ErrorCodes::CannotCreateIndex,
_indexBuildsCoord
->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"a", "b"}),
UUID::gen(),
@@ -270,6 +277,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
// Registering index builds on other collections and databases should still succeed.
auto testBarFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testBarNss.db(),
_testBarUUID,
makeSpecs(_testBarNss, {"c", "d"}),
UUID::gen(),
@@ -277,6 +285,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
_indexBuildOptions));
auto othertestFooFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _othertestFooNss.db(),
_othertestFooUUID,
makeSpecs(_othertestFooNss, {"e", "f"}),
UUID::gen(),
@@ -297,6 +306,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
// Check that the scoped object correctly cleared.
auto testFooFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"a", "b"}),
UUID::gen(),
@@ -317,6 +327,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
ASSERT_EQ(ErrorCodes::CannotCreateIndex,
_indexBuildsCoord
->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"c", "d"}),
UUID::gen(),
@@ -326,6 +337,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
ASSERT_EQ(ErrorCodes::CannotCreateIndex,
_indexBuildsCoord
->startIndexBuild(operationContext(),
+ _testBarNss.db(),
_testBarUUID,
makeSpecs(_testBarNss, {"a", "b"}),
UUID::gen(),
@@ -336,6 +348,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
// Registering index builds on another database should still succeed.
auto othertestFooFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _othertestFooNss.db(),
_othertestFooUUID,
makeSpecs(_othertestFooNss, {"g", "h"}),
UUID::gen(),
@@ -353,6 +366,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
// Check that the scoped object correctly cleared.
auto testFooFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"c", "d"}),
UUID::gen(),
@@ -373,6 +387,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
ASSERT_EQ(ErrorCodes::CannotCreateIndex,
_indexBuildsCoord
->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"e", "f"}),
UUID::gen(),
@@ -383,6 +398,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
ASSERT_EQ(ErrorCodes::CannotCreateIndex,
_indexBuildsCoord
->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"e", "f"}),
UUID::gen(),
@@ -395,6 +411,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, DisallowNewBuildsOnNamespace) {
// Check that the scoped object correctly cleared.
auto testFooFuture =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"e", "f"}),
UUID::gen(),
@@ -430,6 +447,7 @@ TEST_F(IndexBuildsCoordinatorMongodTest, SetCommitQuorumWithBadArguments) {
// Register an index build on _testFooNss.
auto testFoo1Future =
assertGet(_indexBuildsCoord->startIndexBuild(operationContext(),
+ _testFooNss.db(),
_testFooUUID,
makeSpecs(_testFooNss, {"a", "b"}),
UUID::gen(),
diff --git a/src/mongo/db/repl/oplog.cpp b/src/mongo/db/repl/oplog.cpp
index 5ee855adb88..097029946be 100644
--- a/src/mongo/db/repl/oplog.cpp
+++ b/src/mongo/db/repl/oplog.cpp
@@ -195,6 +195,7 @@ Status startIndexBuild(OperationContext* opCtx,
// We don't pass in a commit quorum here because secondary nodes don't have any knowledge of it.
return IndexBuildsCoordinator::get(opCtx)
->startIndexBuild(opCtx,
+ nss.db(),
collUUID,
statusWithIndexes.getValue(),
indexBuildUUID,
@@ -281,6 +282,7 @@ void createIndexForApplyOps(OperationContext* opCtx,
// This spawns a new thread and returns immediately.
MONGO_COMPILER_VARIABLE_UNUSED auto fut = uassertStatusOK(
indexBuildsCoordinator->startIndexBuild(opCtx,
+ indexNss.db(),
collUUID,
{indexSpec},
indexBuildUUID,
diff --git a/src/mongo/db/system_index.cpp b/src/mongo/db/system_index.cpp
index a09cc9c64dc..e0e475b2230 100644
--- a/src/mongo/db/system_index.cpp
+++ b/src/mongo/db/system_index.cpp
@@ -126,6 +126,7 @@ SharedSemiFuture<ReplIndexBuildState::IndexCatalogStats> generateSystemIndexForE
IndexBuildsCoordinator::IndexBuildOptions indexBuildOptions = {CommitQuorumOptions(1)};
auto indexBuildFuture =
uassertStatusOK(indexBuildsCoord->startIndexBuild(opCtx,
+ ns.db(),
collectionUUID,
{indexSpec},
buildUUID,