summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@10gen.com>2013-09-03 18:53:19 -0400
committerSpencer T Brody <spencer@10gen.com>2013-09-06 11:29:57 -0400
commit05c25731039dfe83994fe19bf65704c41c9f2a23 (patch)
tree4217c39612c02ba3d853f5465b116ecc82c538e0 /src
parent369f8711e2e99ba3438ed47aa7da5a412249294c (diff)
downloadmongo-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.cpp38
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;
}