...

Text file src/go.mongodb.org/mongo-driver/testdata/convenient-transactions/commit-retry.yml

Documentation: go.mongodb.org/mongo-driver/testdata/convenient-transactions

     1runOn:
     2    -
     3        minServerVersion: "4.0"
     4        topology: ["replicaset"]
     5    -
     6        minServerVersion: "4.1.8"
     7        topology: ["sharded"]
     8
     9database_name: &database_name "withTransaction-tests"
    10collection_name: &collection_name "test"
    11
    12data: []
    13
    14tests:
    15  -
    16    description: commitTransaction succeeds after multiple connection errors
    17    failPoint:
    18      configureFailPoint: failCommand
    19      mode: { times: 2 }
    20      data:
    21          failCommands: ["commitTransaction"]
    22          closeConnection: true
    23    operations:
    24      - &withTransaction
    25        name: withTransaction
    26        object: session0
    27        arguments:
    28          callback:
    29            operations:
    30              -
    31                name: insertOne
    32                object: collection
    33                arguments:
    34                  session: session0
    35                  document: { _id: 1 }
    36                result:
    37                  insertedId: 1
    38    expectations:
    39      -
    40        command_started_event:
    41          command:
    42            insert: *collection_name
    43            documents:
    44              - { _id: 1 }
    45            ordered: true
    46            lsid: session0
    47            txnNumber: { $numberLong: "1" }
    48            startTransaction: true
    49            autocommit: false
    50            # omitted fields
    51            readConcern: ~
    52            writeConcern: ~
    53          command_name: insert
    54          database_name: *database_name
    55      -
    56        command_started_event:
    57          command:
    58            commitTransaction: 1
    59            lsid: session0
    60            txnNumber: { $numberLong: "1" }
    61            autocommit: false
    62            # omitted fields
    63            readConcern: ~
    64            startTransaction: ~
    65            writeConcern: ~
    66          command_name: commitTransaction
    67          database_name: admin
    68      -
    69        command_started_event:
    70          command:
    71            commitTransaction: 1
    72            lsid: session0
    73            txnNumber: { $numberLong: "1" }
    74            autocommit: false
    75            # commitTransaction applies w:majority on retries (SPEC-1185)
    76            writeConcern: { w: majority, wtimeout: 10000 }
    77            # omitted fields
    78            readConcern: ~
    79            startTransaction: ~
    80          command_name: commitTransaction
    81          database_name: admin
    82      -
    83        command_started_event:
    84          command:
    85            commitTransaction: 1
    86            lsid: session0
    87            txnNumber: { $numberLong: "1" }
    88            autocommit: false
    89            # commitTransaction applies w:majority on retries (SPEC-1185)
    90            writeConcern: { w: majority, wtimeout: 10000 }
    91            # omitted fields
    92            readConcern: ~
    93            startTransaction: ~
    94          command_name: commitTransaction
    95          database_name: admin
    96    outcome:
    97      collection:
    98        data:
    99          - { _id: 1 }
   100  -
   101    description: commitTransaction retry only overwrites write concern w option
   102    failPoint:
   103      configureFailPoint: failCommand
   104      mode: { times: 2 }
   105      data:
   106          failCommands: ["commitTransaction"]
   107          closeConnection: true
   108    operations:
   109      -
   110        name: withTransaction
   111        object: session0
   112        arguments:
   113          callback:
   114            operations:
   115              -
   116                name: insertOne
   117                object: collection
   118                arguments:
   119                  session: session0
   120                  document: { _id: 1 }
   121                result:
   122                  insertedId: 1
   123          options:
   124            writeConcern: { w: 2, j: true, wtimeout: 5000 }
   125    expectations:
   126      -
   127        command_started_event:
   128          command:
   129            insert: *collection_name
   130            documents:
   131              - { _id: 1 }
   132            ordered: true
   133            lsid: session0
   134            txnNumber: { $numberLong: "1" }
   135            startTransaction: true
   136            autocommit: false
   137            # omitted fields
   138            readConcern: ~
   139            writeConcern: ~
   140          command_name: insert
   141          database_name: *database_name
   142      -
   143        command_started_event:
   144          command:
   145            commitTransaction: 1
   146            lsid: session0
   147            txnNumber: { $numberLong: "1" }
   148            autocommit: false
   149            writeConcern: { w: 2, j: true, wtimeout: 5000 }
   150            # omitted fields
   151            readConcern: ~
   152            startTransaction: ~
   153          command_name: commitTransaction
   154          database_name: admin
   155      -
   156        command_started_event:
   157          command:
   158            commitTransaction: 1
   159            lsid: session0
   160            txnNumber: { $numberLong: "1" }
   161            autocommit: false
   162            # commitTransaction applies w:majority on retries (SPEC-1185)
   163            writeConcern: { w: majority, j: true, wtimeout: 5000 }
   164            # omitted fields
   165            readConcern: ~
   166            startTransaction: ~
   167          command_name: commitTransaction
   168          database_name: admin
   169      -
   170        command_started_event:
   171          command:
   172            commitTransaction: 1
   173            lsid: session0
   174            txnNumber: { $numberLong: "1" }
   175            autocommit: false
   176            # commitTransaction applies w:majority on retries (SPEC-1185)
   177            writeConcern: { w: majority, j: true, wtimeout: 5000 }
   178            # omitted fields
   179            readConcern: ~
   180            startTransaction: ~
   181          command_name: commitTransaction
   182          database_name: admin
   183    outcome:
   184      collection:
   185        data:
   186          - { _id: 1 }
   187  -
   188    description: commit is retried after commitTransaction UnknownTransactionCommitResult (NotWritablePrimary)
   189    failPoint:
   190      configureFailPoint: failCommand
   191      mode: { times: 2 }
   192      data:
   193          failCommands: ["commitTransaction"]
   194          errorCode: 10107 # NotWritablePrimary
   195          errorLabels: ["RetryableWriteError"] # SPEC-1565
   196          closeConnection: false
   197    operations:
   198      - *withTransaction
   199    expectations:
   200      -
   201        command_started_event:
   202          command:
   203            insert: *collection_name
   204            documents:
   205              - { _id: 1 }
   206            ordered: true
   207            lsid: session0
   208            txnNumber: { $numberLong: "1" }
   209            startTransaction: true
   210            autocommit: false
   211            # omitted fields
   212            readConcern: ~
   213            writeConcern: ~
   214          command_name: insert
   215          database_name: *database_name
   216      -
   217        command_started_event:
   218          command:
   219            commitTransaction: 1
   220            lsid: session0
   221            txnNumber: { $numberLong: "1" }
   222            autocommit: false
   223            # omitted fields
   224            readConcern: ~
   225            startTransaction: ~
   226            writeConcern: ~
   227          command_name: commitTransaction
   228          database_name: admin
   229      -
   230        command_started_event:
   231          command:
   232            commitTransaction: 1
   233            lsid: session0
   234            txnNumber: { $numberLong: "1" }
   235            autocommit: false
   236            # commitTransaction applies w:majority on retries (SPEC-1185)
   237            writeConcern: { w: majority, wtimeout: 10000 }
   238            # omitted fields
   239            readConcern: ~
   240            startTransaction: ~
   241          command_name: commitTransaction
   242          database_name: admin
   243      -
   244        command_started_event:
   245          command:
   246            commitTransaction: 1
   247            lsid: session0
   248            txnNumber: { $numberLong: "1" }
   249            autocommit: false
   250            # commitTransaction applies w:majority on retries (SPEC-1185)
   251            writeConcern: { w: majority, wtimeout: 10000 }
   252            # omitted fields
   253            readConcern: ~
   254            startTransaction: ~
   255          command_name: commitTransaction
   256          database_name: admin
   257    outcome:
   258      collection:
   259        data:
   260          - { _id: 1 }
   261  -
   262    description: commit is not retried after MaxTimeMSExpired error
   263    failPoint:
   264      configureFailPoint: failCommand
   265      mode: { times: 1 }
   266      data:
   267          failCommands: ["commitTransaction"]
   268          errorCode: 50 # MaxTimeMSExpired
   269    operations:
   270      - name: withTransaction
   271        object: session0
   272        arguments:
   273          callback:
   274            operations:
   275              -
   276                name: insertOne
   277                object: collection
   278                arguments:
   279                  session: session0
   280                  document: { _id: 1 }
   281                result:
   282                  insertedId: 1
   283          options:
   284            maxCommitTimeMS: 60000
   285        result:
   286          errorCodeName: MaxTimeMSExpired
   287          errorLabelsContain: ["UnknownTransactionCommitResult"]
   288          errorLabelsOmit: ["TransientTransactionError"]
   289    expectations:
   290      -
   291        command_started_event:
   292          command:
   293            insert: *collection_name
   294            documents:
   295              - { _id: 1 }
   296            ordered: true
   297            lsid: session0
   298            txnNumber: { $numberLong: "1" }
   299            startTransaction: true
   300            autocommit: false
   301            # omitted fields
   302            readConcern: ~
   303            writeConcern: ~
   304          command_name: insert
   305          database_name: *database_name
   306      -
   307        command_started_event:
   308          command:
   309            commitTransaction: 1
   310            lsid: session0
   311            txnNumber: { $numberLong: "1" }
   312            autocommit: false
   313            maxTimeMS: 60000
   314            # omitted fields
   315            readConcern: ~
   316            startTransaction: ~
   317            writeConcern: ~
   318          command_name: commitTransaction
   319          database_name: admin
   320    outcome:
   321      collection:
   322        # In reality, the outcome of the commit is unknown but we fabricate
   323        # the error with failCommand.errorCode which does not apply the commit
   324        # operation.
   325        data: []

View as plain text