summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Shuvalov <andrew.shuvalov@mongodb.com>2021-05-18 00:37:28 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-18 01:09:50 +0000
commitd6c259d22efe9c5aba86f796a6b352f164c0ee36 (patch)
tree55369457db000c3479849b38fb85b1c21ac39658
parent65a6fbc767c81a6111d9efe18a7c90efe2bae70d (diff)
downloadmongo-d6c259d22efe9c5aba86f796a6b352f164c0ee36.tar.gz
SERVER-56584: BACKPORT-8946 Create IDL for documents for retriable find and modify
-rw-r--r--src/mongo/db/repl/SConscript13
-rw-r--r--src/mongo/db/repl/image_collection_entry.idl39
-rw-r--r--src/mongo/db/repl/oplog_entry.idl7
3 files changed, 59 insertions, 0 deletions
diff --git a/src/mongo/db/repl/SConscript b/src/mongo/db/repl/SConscript
index 58964522e5b..639e1db964a 100644
--- a/src/mongo/db/repl/SConscript
+++ b/src/mongo/db/repl/SConscript
@@ -1808,3 +1808,16 @@ env.Library(
'election_reason_counter',
],
)
+
+env.Library(
+ target='image_collection_entry',
+ source=[
+ env.Idlc('image_collection_entry.idl')[0],
+ ],
+ LIBDEPS=[
+ '$BUILD_DIR/mongo/base',
+ '$BUILD_DIR/mongo/db/logical_session_id',
+ '$BUILD_DIR/mongo/idl/idl_parser',
+ 'oplog_entry',
+ ],
+)
diff --git a/src/mongo/db/repl/image_collection_entry.idl b/src/mongo/db/repl/image_collection_entry.idl
new file mode 100644
index 00000000000..51f46125593
--- /dev/null
+++ b/src/mongo/db/repl/image_collection_entry.idl
@@ -0,0 +1,39 @@
+# Oplog Entry IDL File
+
+global:
+ cpp_namespace: "mongo::repl"
+
+imports:
+ - "mongo/idl/basic_types.idl"
+ - "mongo/db/logical_session_id.idl"
+ - "mongo/db/repl/oplog_entry.idl"
+
+structs:
+ ImageEntry:
+ description: "Represents either a pre-image or post-image necessary for satisfying a
+ retryable findAndModify."
+ strict: false
+ fields:
+ _id:
+ cpp_name: _id
+ type: LogicalSessionId
+ txnNum:
+ cpp_name: txnNumber
+ type: TxnNumber
+ ts:
+ cpp_name: ts
+ type: timestamp
+ imageKind:
+ cpp_name: imageKind
+ type: RetryImage
+ image:
+ cpp_name: image
+ type: object
+ invalidated:
+ cpp_name: invalidated
+ type: bool
+ default: false
+ invalidatedReason:
+ cpp_name: invalidatedReason
+ type: string
+ optional: true
diff --git a/src/mongo/db/repl/oplog_entry.idl b/src/mongo/db/repl/oplog_entry.idl
index cfed4af41cf..241f77c0c5d 100644
--- a/src/mongo/db/repl/oplog_entry.idl
+++ b/src/mongo/db/repl/oplog_entry.idl
@@ -46,6 +46,13 @@ enums:
kUpdate: "u"
kDelete: "d"
kNoop: "n"
+ RetryImage:
+ description: "Dictates whether a pre-image or post-image is to be stored on behalf of this
+ retryable write."
+ type: string
+ values:
+ kPreImage: "preImage"
+ kPostImage: "postImage"
structs:
DurableReplOperation: