diff options
-rw-r--r-- | src/mongo/db/s/migration_coordinator_document.idl | 15 | ||||
-rw-r--r-- | src/mongo/s/chunk_version.cpp | 50 | ||||
-rw-r--r-- | src/mongo/s/chunk_version.h | 25 | ||||
-rw-r--r-- | src/mongo/s/chunk_version.idl | 4 |
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 |