diff options
author | Andrew Shuvalov <andrew.shuvalov@mongodb.com> | 2021-05-18 00:37:28 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-18 01:09:50 +0000 |
commit | d6c259d22efe9c5aba86f796a6b352f164c0ee36 (patch) | |
tree | 55369457db000c3479849b38fb85b1c21ac39658 | |
parent | 65a6fbc767c81a6111d9efe18a7c90efe2bae70d (diff) | |
download | mongo-d6c259d22efe9c5aba86f796a6b352f164c0ee36.tar.gz |
SERVER-56584: BACKPORT-8946 Create IDL for documents for retriable find and modify
-rw-r--r-- | src/mongo/db/repl/SConscript | 13 | ||||
-rw-r--r-- | src/mongo/db/repl/image_collection_entry.idl | 39 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_entry.idl | 7 |
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: |