summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog/coll_mod.cpp
diff options
context:
space:
mode:
authorMaria van Keulen <maria@mongodb.com>2017-10-09 14:48:46 -0400
committerMaria van Keulen <maria@mongodb.com>2017-10-09 14:49:16 -0400
commit9eba349099bdc58f3ad4e55aa2e846d6d0244f41 (patch)
tree678f5a046fbbb5bab30c70b608206957c32df6ac /src/mongo/db/catalog/coll_mod.cpp
parent29342abd41293c78104c288cb1c4807df94d8de2 (diff)
downloadmongo-9eba349099bdc58f3ad4e55aa2e846d6d0244f41.tar.gz
Revert "SERVER-30131 Ensure collections on local have UUIDs"
This reverts commit 84690cb878db1b231c00d3c9fcb0005ca7cb6361.
Diffstat (limited to 'src/mongo/db/catalog/coll_mod.cpp')
-rw-r--r--src/mongo/db/catalog/coll_mod.cpp70
1 files changed, 29 insertions, 41 deletions
diff --git a/src/mongo/db/catalog/coll_mod.cpp b/src/mongo/db/catalog/coll_mod.cpp
index cc58787cead..9badcf39050 100644
--- a/src/mongo/db/catalog/coll_mod.cpp
+++ b/src/mongo/db/catalog/coll_mod.cpp
@@ -443,10 +443,10 @@ Status _collModInternal(OperationContext* opCtx,
return Status::OK();
}
-void _updateDatabaseUUIDSchemaVersion(OperationContext* opCtx,
- const std::string& dbname,
- std::map<std::string, UUID>& collToUUID,
- bool needUUIDAdded) {
+void _updateDBSchemaVersion(OperationContext* opCtx,
+ const std::string& dbname,
+ std::map<std::string, UUID>& collToUUID,
+ bool needUUIDAdded) {
// Iterate through all collections of database dbname and make necessary UUID changes.
std::vector<NamespaceString> collNamespaceStrings;
{
@@ -498,17 +498,16 @@ void _updateDatabaseUUIDSchemaVersion(OperationContext* opCtx,
}
}
-Status _updateDatabaseUUIDSchemaVersionNonReplicated(OperationContext* opCtx,
- const std::string& dbname,
- bool needUUIDAdded) {
+void _updateDBSchemaVersionNonReplicated(OperationContext* opCtx,
+ const std::string& dbname,
+ bool needUUIDAdded) {
// Iterate through all collections if we're in the "local" database.
std::vector<NamespaceString> collNamespaceStrings;
if (dbname == "local") {
AutoGetDb autoDb(opCtx, dbname, MODE_X);
Database* const db = autoDb.getDb();
if (!db) {
- return Status(ErrorCodes::NamespaceNotFound,
- str::stream() << "database " << dbname << " does not exist");
+ return;
}
for (auto collectionIt = db->begin(); collectionIt != db->end(); ++collectionIt) {
Collection* coll = *collectionIt;
@@ -541,14 +540,27 @@ Status _updateDatabaseUUIDSchemaVersionNonReplicated(OperationContext* opCtx,
}
if ((needUUIDAdded && !coll->uuid()) || (!needUUIDAdded && coll->uuid())) {
BSONObjBuilder resultWeDontCareAbout;
- auto collModStatus = _collModInternal(
- opCtx, coll->ns(), collModObj, &resultWeDontCareAbout, /*upgradeUUID*/ true, uuid);
- if (!collModStatus.isOK()) {
- return collModStatus;
- }
+ uassertStatusOK(_collModInternal(
+ opCtx, coll->ns(), collModObj, &resultWeDontCareAbout, /*upgradeUUID*/ true, uuid));
}
}
- return Status::OK();
+}
+
+void updateUUIDSchemaVersionNonReplicated(OperationContext* opCtx, bool upgrade) {
+ if (!enableCollectionUUIDs) {
+ return;
+ }
+ // Update UUIDs on all collections of all non-replicated databases.
+ std::vector<std::string> dbNames;
+ StorageEngine* storageEngine = opCtx->getServiceContext()->getGlobalStorageEngine();
+ {
+ Lock::GlobalLock lk(opCtx, MODE_IS, UINT_MAX);
+ storageEngine->listDatabases(&dbNames);
+ }
+ for (auto it = dbNames.begin(); it != dbNames.end(); ++it) {
+ auto dbName = *it;
+ _updateDBSchemaVersionNonReplicated(opCtx, dbName, upgrade);
+ }
}
} // namespace
@@ -567,10 +579,7 @@ Status collModForUUIDUpgrade(OperationContext* opCtx,
BSONObjBuilder resultWeDontCareAbout;
// Update all non-replicated collection UUIDs.
if (nss.ns() == "admin.system.version") {
- auto schemaStatus = updateUUIDSchemaVersionNonReplicated(opCtx, !!uuid);
- if (!schemaStatus.isOK()) {
- return schemaStatus;
- }
+ updateUUIDSchemaVersionNonReplicated(opCtx, !!uuid);
}
return _collModInternal(opCtx, nss, cmdObj, &resultWeDontCareAbout, /*upgradeUUID*/ true, uuid);
}
@@ -623,32 +632,11 @@ void updateUUIDSchemaVersion(OperationContext* opCtx, bool upgrade) {
for (auto it = dbNames.begin(); it != dbNames.end(); ++it) {
auto dbName = *it;
- _updateDatabaseUUIDSchemaVersion(opCtx, dbName, dbToCollToUUID[dbName], upgrade);
+ _updateDBSchemaVersion(opCtx, dbName, dbToCollToUUID[dbName], upgrade);
}
const WriteConcernOptions writeConcern(WriteConcernOptions::kMajority,
WriteConcernOptions::SyncMode::UNSET,
/*timeout*/ INT_MAX);
repl::getGlobalReplicationCoordinator()->awaitReplicationOfLastOpForClient(opCtx, writeConcern);
}
-
-Status updateUUIDSchemaVersionNonReplicated(OperationContext* opCtx, bool upgrade) {
- if (!enableCollectionUUIDs) {
- return Status::OK();
- }
- // Update UUIDs on all collections of all non-replicated databases.
- std::vector<std::string> dbNames;
- StorageEngine* storageEngine = opCtx->getServiceContext()->getGlobalStorageEngine();
- {
- Lock::GlobalLock lk(opCtx, MODE_IS, UINT_MAX);
- storageEngine->listDatabases(&dbNames);
- }
- for (auto it = dbNames.begin(); it != dbNames.end(); ++it) {
- auto dbName = *it;
- auto schemaStatus = _updateDatabaseUUIDSchemaVersionNonReplicated(opCtx, dbName, upgrade);
- if (!schemaStatus.isOK()) {
- return schemaStatus;
- }
- }
- return Status::OK();
-}
} // namespace mongo