Description
The methods just check specific values for the enum. We should either make the enum definition private or remove the functions.
------
Make the class behave like this:
struct FeatureCompatibility {
|
enum class Version { kFullyDowngradedTo34, kUpgradingTo36, kFullyUpgradedTo36, kDowngradingTo34, kUnsetIn36 };
|
|
|
const Version getVersion() const {
|
return _version.load();
|
}
|
|
|
void reset() {
|
_version.store(Version::k34);
|
}
|
|
|
void setVersion(Version version) {
|
// enforce state transitions
|
return _version.store(version);
|
}
|
|
|
const bool isSchemaVersion36() {
|
return (isFullyUpgradedTo36() || isUpgradingTo36());
|
}
|
|
|
private:
|
AtomicWord<Version> _version{Version::kUnset};
|
|
|
} featureCompatibility;
|
Attachments
Issue Links
- depends on
-
SERVER-31438 Remove featureCompatibilityVersion parameter for IndexDescriptor::getDefaultIndexVersion
-
- Closed
-
- is related to
-
SERVER-31607 Remove FeatureCompatibilityVersionInfo struct
-
- Closed
-
- related to
-
SERVER-30745 Prohibit unsafe comparisons against feature compatibility version
-
- Closed
-