diff options
author | Louis Williams <louis.williams@mongodb.com> | 2017-09-22 13:55:59 -0400 |
---|---|---|
committer | Louis Williams <louis.williams@mongodb.com> | 2017-09-28 11:10:05 -0400 |
commit | b0b99866781302ba8b16de033ff2681f20483c14 (patch) | |
tree | e5e988301e89390aebcf5ec12055465e353dbb77 /src/mongo/db/db.cpp | |
parent | f24fbb0011c6ded9101f08574e7cd07e63690a9b (diff) | |
download | mongo-b0b99866781302ba8b16de033ff2681f20483c14.tar.gz |
SERVER-31209 Persist targetVersion in FCV document to indicate an upgrade/downgrade in progress.
Diffstat (limited to 'src/mongo/db/db.cpp')
-rw-r--r-- | src/mongo/db/db.cpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp index 8f29f0605bc..ed3ba14e852 100644 --- a/src/mongo/db/db.cpp +++ b/src/mongo/db/db.cpp @@ -405,17 +405,33 @@ void repairDatabasesAndCheckVersion(OperationContext* opCtx) { versionColl, BSON("_id" << FeatureCompatibilityVersion::kParameterName), featureCompatibilityVersion)) { - auto version = FeatureCompatibilityVersion::parse(featureCompatibilityVersion); - if (!version.isOK()) { - severe() << version.getStatus(); + auto swVersionInfo = + FeatureCompatibilityVersion::parse(featureCompatibilityVersion); + if (!swVersionInfo.isOK()) { + severe() << swVersionInfo.getStatus(); fassertFailedNoTrace(40283); } - serverGlobalParams.featureCompatibility.version.store(version.getValue()); - - // Update schemaVersion parameter. - serverGlobalParams.featureCompatibility.isSchemaVersion36.store( - serverGlobalParams.featureCompatibility.version.load() == - ServerGlobalParams::FeatureCompatibility::Version::k36); + auto versionInfo = swVersionInfo.getValue(); + serverGlobalParams.featureCompatibility.version.store(versionInfo.version); + serverGlobalParams.featureCompatibility.targetVersion.store( + versionInfo.targetVersion); + + // On startup, if the targetVersion field exists, then an upgrade/downgrade + // did not complete successfully. + if (versionInfo.targetVersion != + ServerGlobalParams::FeatureCompatibility::Version::kUnset) { + log() << "** WARNING: A featureCompatibilityVersion upgrade or downgrade " + "did not complete. " + << startupWarningsLog; + log() << "** The current featureCompatibilityVersion is " + << FeatureCompatibilityVersion::toString(versionInfo.version) + << " and the targeted version is " + << FeatureCompatibilityVersion::toString(versionInfo.targetVersion) + << "." << startupWarningsLog; + log() << "** To fix this, use the setFeatureCompatibilityVersion " + << "command to resume upgrade to 3.6 or downgrade to 3.4." + << startupWarningsLog; + } } } } |