diff options
author | Spencer T Brody <spencer@10gen.com> | 2013-09-03 18:53:19 -0400 |
---|---|---|
committer | Spencer T Brody <spencer@10gen.com> | 2013-09-06 11:29:57 -0400 |
commit | 05c25731039dfe83994fe19bf65704c41c9f2a23 (patch) | |
tree | 4217c39612c02ba3d853f5465b116ecc82c538e0 /src | |
parent | 369f8711e2e99ba3438ed47aa7da5a412249294c (diff) | |
download | mongo-05c25731039dfe83994fe19bf65704c41c9f2a23.tar.gz |
SERVER-9517 Temporarily update automatic index building code to build the right index for v2 style user documents
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/auth/auth_index_d.cpp | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/src/mongo/db/auth/auth_index_d.cpp b/src/mongo/db/auth/auth_index_d.cpp index c649c28bca5..80c4d02e410 100644 --- a/src/mongo/db/auth/auth_index_d.cpp +++ b/src/mongo/db/auth/auth_index_d.cpp @@ -30,18 +30,21 @@ namespace mongo { namespace authindex { namespace { - BSONObj oldSystemUsersKeyPattern; - BSONObj extendedSystemUsersKeyPattern; - std::string extendedSystemUsersIndexName; + BSONObj v0SystemUsersKeyPattern; + BSONObj v1SystemUsersKeyPattern; + BSONObj v2SystemUsersKeyPattern; + std::string v2SystemUsersIndexName; MONGO_INITIALIZER(AuthIndexKeyPatterns)(InitializerContext*) { - oldSystemUsersKeyPattern = BSON(AuthorizationManager::V1_USER_NAME_FIELD_NAME << 1); - extendedSystemUsersKeyPattern = BSON(AuthorizationManager::V1_USER_NAME_FIELD_NAME << 1 << - AuthorizationManager::V1_USER_SOURCE_FIELD_NAME << 1); - extendedSystemUsersIndexName = std::string( + v0SystemUsersKeyPattern = BSON(AuthorizationManager::V1_USER_NAME_FIELD_NAME << 1); + v1SystemUsersKeyPattern = BSON(AuthorizationManager::V1_USER_NAME_FIELD_NAME << 1 << + AuthorizationManager::V1_USER_SOURCE_FIELD_NAME << 1); + v2SystemUsersKeyPattern = BSON(AuthorizationManager::USER_NAME_FIELD_NAME << 1 << + AuthorizationManager::USER_SOURCE_FIELD_NAME << 1); + v2SystemUsersIndexName = std::string( str::stream() << - AuthorizationManager::V1_USER_NAME_FIELD_NAME << "_1_" << - AuthorizationManager::V1_USER_SOURCE_FIELD_NAME << "_1"); + AuthorizationManager::USER_NAME_FIELD_NAME << "_1_" << + AuthorizationManager::USER_SOURCE_FIELD_NAME << "_1"); return Status::OK(); } @@ -61,7 +64,8 @@ namespace { while (indexIter.more()) { IndexDetails& idetails = indexIter.next(); - if (idetails.keyPattern() == oldSystemUsersKeyPattern) + if (idetails.keyPattern() == v0SystemUsersKeyPattern || + idetails.keyPattern() == v1SystemUsersKeyPattern) namedIndexesToDrop.push_back(idetails.indexName()); } for (size_t i = 0; i < namedIndexesToDrop.size(); ++i) { @@ -74,9 +78,8 @@ namespace { errmsg, infoBuilder, false)) { - log() << "Dropped index " << namedIndexesToDrop[i] << " with key pattern " << - oldSystemUsersKeyPattern << " from " << systemUsers << - " because it is incompatible with extended form privilege documents." << endl; + log() << "Dropped index " << namedIndexesToDrop[i] << " from " << systemUsers << + " because it is incompatible with v2 form privilege documents." << endl; } else { // Only reason should be orphaned index, which dropIndexes logged. @@ -93,16 +96,13 @@ namespace { if (ns.coll() == "system.users") { try { Helpers::ensureIndex(ns.ns().c_str(), - extendedSystemUsersKeyPattern, + v2SystemUsersKeyPattern, true, // unique - extendedSystemUsersIndexName.c_str()); + v2SystemUsersIndexName.c_str()); } catch (const DBException& e) { if (e.getCode() == ASSERT_ID_DUPKEY) { log() << "Duplicate key exception while trying to build unique index on " << - ns << ". You most likely have user documents with duplicate \"user\" " - "fields. To resolve this, start up with a version of MongoDB prior to " - "2.4, drop the duplicate user documents, then start up again with the " - "current version." << endl; + ns << ". This is likely due to upgrade process shenanigans" << endl; } throw; } |