diff options
author | Maria van Keulen <maria@mongodb.com> | 2017-10-09 14:48:46 -0400 |
---|---|---|
committer | Maria van Keulen <maria@mongodb.com> | 2017-10-09 14:49:16 -0400 |
commit | 9eba349099bdc58f3ad4e55aa2e846d6d0244f41 (patch) | |
tree | 678f5a046fbbb5bab30c70b608206957c32df6ac /src/mongo/db/catalog/coll_mod.cpp | |
parent | 29342abd41293c78104c288cb1c4807df94d8de2 (diff) | |
download | mongo-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.cpp | 70 |
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 |