diff options
author | Luis Osta <luis.osta@mongodb.com> | 2020-07-14 16:56:45 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-07-14 17:59:55 +0000 |
commit | a3d23a225219e3390879a816de36a2fea95a8e48 (patch) | |
tree | e02796f07e5dd8775897b6a766a0de99b05e5c0c | |
parent | 7e4402baf44531acabfe4a58c7be61c478c46bac (diff) | |
download | mongo-a3d23a225219e3390879a816de36a2fea95a8e48.tar.gz |
SERVER-48937 Add IDL types for the donor and recipient state machine
-rw-r--r-- | src/mongo/client/read_preference_setting.idl | 44 | ||||
-rw-r--r-- | src/mongo/db/commands/migrate_tenant_cmds.idl | 11 | ||||
-rw-r--r-- | src/mongo/db/repl/migrate_tenant_state_machine.idl | 60 | ||||
-rw-r--r-- | src/mongo/db/repl/migrating_tenant_util.h (renamed from src/mongo/db/commands/migrate_tenant_cmds_util.h) | 0 | ||||
-rw-r--r-- | src/mongo/util/uuid.h | 1 |
5 files changed, 102 insertions, 14 deletions
diff --git a/src/mongo/client/read_preference_setting.idl b/src/mongo/client/read_preference_setting.idl new file mode 100644 index 00000000000..03b7db69215 --- /dev/null +++ b/src/mongo/client/read_preference_setting.idl @@ -0,0 +1,44 @@ +# Copyright (C) 2020-present MongoDB, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the Server Side Public License, version 1, +# as published by MongoDB, Inc. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# Server Side Public License for more details. +# +# You should have received a copy of the Server Side Public License +# along with this program. If not, see +# <http://www.mongodb.com/licensing/server-side-public-license>. +# +# As a special exception, the copyright holders give permission to link the +# code of portions of this program with the OpenSSL library under certain +# conditions as described in each individual source file and distribute +# linked combinations including the program with the OpenSSL library. You +# must comply with the Server Side Public License in all respects for +# all of the code used other than as permitted herein. If you modify file(s) +# with this exception, you may extend this exception to your version of the +# file(s), but you are not obligated to do so. If you do not wish to do so, +# delete this exception statement from your version. If you delete this +# exception statement from all source files in the program, then also delete +# it in the license file. +# + +global: + cpp_namespace: "mongo" + cpp_includes: + - "mongo/client/read_preference.h" + +imports: + - "mongo/idl/basic_types.idl" + - "mongo/client/read_preference.idl" + +types: + readPreference: + description: "Represents the read preference of a command." + bson_serialization_type: object + cpp_type: ReadPreferenceSetting + serializer: ReadPreferenceSetting::toInnerBSON + deserializer: ReadPreferenceSetting::fromInnerBSONForIDL diff --git a/src/mongo/db/commands/migrate_tenant_cmds.idl b/src/mongo/db/commands/migrate_tenant_cmds.idl index 007ecc5af5f..8afd5ff4eb0 100644 --- a/src/mongo/db/commands/migrate_tenant_cmds.idl +++ b/src/mongo/db/commands/migrate_tenant_cmds.idl @@ -30,20 +30,13 @@ global: cpp_namespace: "mongo" cpp_includes: - "mongo/client/read_preference.h" - - "mongo/db/commands/migrate_tenant_cmds_util.h" + - "mongo/db/repl/migrating_tenant_util.h" imports: + - "mongo/client/read_preference_setting.idl" - "mongo/idl/basic_types.idl" - "mongo/s/sharding_types.idl" -types: - readPreference: - description: "Represents the read preference of a command." - bson_serialization_type: object - cpp_type: ReadPreferenceSetting - serializer: ReadPreferenceSetting::toInnerBSON - deserializer: ReadPreferenceSetting::fromInnerBSONForIDL - commands: donorStartMigration: description: "Parser for the 'donorStartMigration' command." diff --git a/src/mongo/db/repl/migrate_tenant_state_machine.idl b/src/mongo/db/repl/migrate_tenant_state_machine.idl index ba9cdba45b3..970e33f814c 100644 --- a/src/mongo/db/repl/migrate_tenant_state_machine.idl +++ b/src/mongo/db/repl/migrate_tenant_state_machine.idl @@ -27,8 +27,13 @@ # global: cpp_namespace: "mongo" + cpp_includes: + - "mongo/client/read_preference.h" + - "mongo/db/repl/migrating_tenant_util.h" imports: + - "mongo/client/read_preference_setting.idl" + - "mongo/db/repl/replication_types.idl" - "mongo/idl/basic_types.idl" enums: @@ -50,14 +55,59 @@ structs: type: objectid description: "A unique identifier for the document." cpp_name: id + migrationId: + type: uuid + description: "Unique identifier for the tenant migration." + recipientConnectionString: + type: string + description: "The URI string that the donor will utilize to create a connection with the recipient." databasePrefix: type: string description: "The database prefix for the migration." - blockTimestamp: - type: timestamp - description: "The timestamp at which writes and causal reads against the databases - being migrated should start blocking." - optional: true state: type: TenantMigrationDonorState description: "The state of the tenant migration." + blockTimestamp: + type: timestamp + description: + "The timestamp at which writes and causal reads against the databases + being migrated should start blocking." + optional: true + garbageCollect: + type: bool + description: "A boolean that determines whether the state machine should be deleted after a delay via the TTL monitor." + + tenantMigrationRecipientDocument: + description: "Represents an in-progress tenant migration on the migration recipient." + strict: true + fields: + _id: + type: objectid + description: "A unique identifier for the document." + cpp_name: id + migrationId: + type: uuid + description: "Unique identifier for the tenant migration." + donorConnectionString: + type: string + description: "The URI string that the donor will utilize to create a connection with the recipient." + databasePrefix: + type: string + description: "The database prefix for the migration." + validator: + callback: "validateDbPrefix" + readPreference: + type: readPreference + description: "The read preference setting that the recipient will use to determine which node in the donor replica set to clone from." + garbageCollect: + type: bool + description: "A boolean that determines whether the state machine should be deleted after a delay via the TTL monitor." + startApplyingOpTime: + description: "Populated during data sync; the donor's operation time when the data cloning starts." + type: optime + startFetchingOpTime: + description: "Populated during data sync; the donor's operation time of the last open transaction when the data cloning started." + type: optime + cloneFinishedOptime: + description: "Populated during data sync; the recipient operation time when the data cloning finishes." + type: optime diff --git a/src/mongo/db/commands/migrate_tenant_cmds_util.h b/src/mongo/db/repl/migrating_tenant_util.h index 976d7905ae1..976d7905ae1 100644 --- a/src/mongo/db/commands/migrate_tenant_cmds_util.h +++ b/src/mongo/db/repl/migrating_tenant_util.h diff --git a/src/mongo/util/uuid.h b/src/mongo/util/uuid.h index e29c49bf1ad..200d02e50bc 100644 --- a/src/mongo/util/uuid.h +++ b/src/mongo/util/uuid.h @@ -88,6 +88,7 @@ class UUID { friend class ResumeTokenInternal; friend class ShardCollectionTypeBase; friend class TenantMigrationDonorDocument; + friend class TenantMigrationRecipientDocument; friend class VoteCommitIndexBuild; friend class DonorStartMigration; friend class DonorWaitForMigrationToCommit; |