summaryrefslogtreecommitdiff
path: root/src/mongo/db/db.cpp
diff options
context:
space:
mode:
authorLouis Williams <louis.williams@mongodb.com>2017-09-22 13:55:59 -0400
committerLouis Williams <louis.williams@mongodb.com>2017-09-28 11:10:05 -0400
commitb0b99866781302ba8b16de033ff2681f20483c14 (patch)
treee5e988301e89390aebcf5ec12055465e353dbb77 /src/mongo/db/db.cpp
parentf24fbb0011c6ded9101f08574e7cd07e63690a9b (diff)
downloadmongo-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.cpp34
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;
+ }
}
}
}