summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Osta <luis.osta@mongodb.com>2020-07-14 16:56:45 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-07-14 17:59:55 +0000
commita3d23a225219e3390879a816de36a2fea95a8e48 (patch)
treee02796f07e5dd8775897b6a766a0de99b05e5c0c
parent7e4402baf44531acabfe4a58c7be61c478c46bac (diff)
downloadmongo-a3d23a225219e3390879a816de36a2fea95a8e48.tar.gz
SERVER-48937 Add IDL types for the donor and recipient state machine
-rw-r--r--src/mongo/client/read_preference_setting.idl44
-rw-r--r--src/mongo/db/commands/migrate_tenant_cmds.idl11
-rw-r--r--src/mongo/db/repl/migrate_tenant_state_machine.idl60
-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.h1
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;