summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/s/migration_coordinator_document.idl15
-rw-r--r--src/mongo/s/chunk_version.cpp50
-rw-r--r--src/mongo/s/chunk_version.h25
-rw-r--r--src/mongo/s/chunk_version.idl4
4 files changed, 4 insertions, 90 deletions
diff --git a/src/mongo/db/s/migration_coordinator_document.idl b/src/mongo/db/s/migration_coordinator_document.idl
index 29c629ca0eb..028cb194582 100644
--- a/src/mongo/db/s/migration_coordinator_document.idl
+++ b/src/mongo/db/s/migration_coordinator_document.idl
@@ -58,19 +58,6 @@ types:
cpp_type: "mongo::MigrationSessionId"
deserializer: "mongo::MigrationSessionId::fromString"
serializer: "mongo::MigrationSessionId::toString"
- # DO NOT add any usages of this format.
- #
- # Type used to transition from wrongly encoded chunk version to new format in disk
- # In pre 6.0 versions will serialize chunk version as:
- # { 0: <major/minor>, 1: <epoch>, 2: <timestamp> } (note the array encoded as a BSON object)
- # From 6.0 on the chunk version serialized will be:
- # { v: <major/version>, e: <epoch>, t: <timestamp>}
- ChunkVersionArrayWronglyEncodedOr60Format:
- bson_serialization_type: any
- description: An object representing a chunk version for a collection.
- cpp_type: ChunkVersion
- serializer: ChunkVersion::serializeToPositionalWronlyEcondedOr60AsBSON
- deserializer: ChunkVersion::fromBSONPositionalOrNewerFormat
structs:
migrationCoordinatorDocument:
@@ -107,7 +94,7 @@ structs:
type: chunk_range
description: "The range being migrated."
preMigrationChunkVersion:
- type: ChunkVersionArrayWronglyEncodedOr60Format
+ type: ChunkVersion
description: "The version, at the start of the migration, of the chunk being moved."
decision:
type: Decision
diff --git a/src/mongo/s/chunk_version.cpp b/src/mongo/s/chunk_version.cpp
index 1073e819413..8da764c2080 100644
--- a/src/mongo/s/chunk_version.cpp
+++ b/src/mongo/s/chunk_version.cpp
@@ -218,61 +218,13 @@ ChunkVersion ChunkVersion::parse(const BSONElement& element) {
parsedVersion.getTimestamp());
}
-void ChunkVersion::serialize(StringData field, BSONObjBuilder* builder) {
+void ChunkVersion::serializeToBSON(StringData field, BSONObjBuilder* builder) const {
ChunkVersion60Format version;
version.setGeneration({_epoch, _timestamp});
version.setPlacement(Timestamp(majorVersion(), minorVersion()));
builder->append(field, version.toBSON());
}
-void ChunkVersion::serializeToPositionalWronlyEcondedOr60AsBSON(StringData field,
- BSONObjBuilder* builder) const {
- if (feature_flags::gFeatureFlagNewPersistedChunkVersionFormat.isEnabled(
- serverGlobalParams.featureCompatibility)) {
- ChunkVersion60Format version;
- version.setGeneration({_epoch, _timestamp});
- version.setPlacement(Timestamp(majorVersion(), minorVersion()));
- builder->append(field, version.toBSON());
- } else {
- serializeToPositionalFormatWronglyEncodedAsBSON(field, builder);
- }
-}
-
-void ChunkVersion::serializeToBSON(StringData field, BSONObjBuilder* builder) const {
- if (feature_flags::gFeatureFlagNewPersistedChunkVersionFormat.isEnabled(
- serverGlobalParams.featureCompatibility)) {
- ChunkVersion60Format version;
- version.setGeneration({_epoch, _timestamp});
- version.setPlacement(Timestamp(majorVersion(), minorVersion()));
- builder->append(field, version.toBSON());
- } else {
- BSONArrayBuilder arr(builder->subarrayStart(field));
- arr.appendTimestamp(_combined);
- arr.append(_epoch);
- arr.append(_timestamp);
- }
-}
-
-void ChunkVersion::serializeToPositionalFormatWronglyEncodedAsBSON(StringData field,
- BSONObjBuilder* builder) const {
- if (feature_flags::gFeatureFlagNewPersistedChunkVersionFormat.isEnabled(
- serverGlobalParams.featureCompatibility)) {
- ChunkVersion60Format version;
- version.setGeneration({_epoch, _timestamp});
- version.setPlacement(Timestamp(majorVersion(), minorVersion()));
- builder->append(field, version.toBSON());
- } else {
- BSONObjBuilder subObjBuilder(builder->subobjStart(field));
- subObjBuilder.appendElements([&] {
- BSONArrayBuilder arr;
- arr.appendTimestamp(_combined);
- arr.append(_epoch);
- arr.append(_timestamp);
- return arr.obj();
- }());
- }
-}
-
void ChunkVersion::appendLegacyWithField(BSONObjBuilder* out, StringData field) const {
if (feature_flags::gFeatureFlagNewPersistedChunkVersionFormat.isEnabled(
serverGlobalParams.featureCompatibility)) {
diff --git a/src/mongo/s/chunk_version.h b/src/mongo/s/chunk_version.h
index 4a36eb12cde..212b1218f41 100644
--- a/src/mongo/s/chunk_version.h
+++ b/src/mongo/s/chunk_version.h
@@ -214,30 +214,7 @@ public:
}
static ChunkVersion parse(const BSONElement& element);
- void serialize(StringData field, BSONObjBuilder* builder);
-
- /**
- * Serializes the version held by this object to 'out' in the form:
- * {..., <field>: {0:<combined major/minor, 1: <epoch>, 2: <Timestamp>}}
- * or
- * { ..., <field> : {t: <Timestamp>, e: <OID>, v: <major/minor> }}.
- *
- * Depending on the FCV version
- */
- void serializeToPositionalWronlyEcondedOr60AsBSON(StringData fieldName,
- BSONObjBuilder* builder) const;
-
- /**
- * Serializes the version held by this object to 'out' in the form:
- * { ..., <field>: [ <combined major/minor>, <OID epoch>, <Timestamp> ], ... }.
- * or
- * { ..., <field> : {t: <Timestamp>, e: <OID>, v: <major/minor> }}.
- *
- * Depending on the FCV version
- */
- void serializeToBSON(StringData fieldName, BSONObjBuilder* builder) const;
- void serializeToPositionalFormatWronglyEncodedAsBSON(StringData fieldName,
- BSONObjBuilder* builder) const;
+ void serializeToBSON(StringData field, BSONObjBuilder* builder) const;
/**
* NOTE: This format is being phased out. Use serializeToBSON instead.
diff --git a/src/mongo/s/chunk_version.idl b/src/mongo/s/chunk_version.idl
index 26b4bf8e7c2..f281cfb3df0 100644
--- a/src/mongo/s/chunk_version.idl
+++ b/src/mongo/s/chunk_version.idl
@@ -72,11 +72,9 @@ structs:
types:
# The canonical serialisation format for ChunkVersions
- #
- # TODO (SERVER-65530): Use IDL directly instead of this custom parser/serialiser
ChunkVersion:
bson_serialization_type: any
description: An object representing a chunk version for a collection.
cpp_type: ChunkVersion
serializer: ChunkVersion::serializeToBSON
- deserializer: ChunkVersion::fromBSONPositionalOrNewerFormat
+ deserializer: ChunkVersion::parse