Uploaded image for project: 'Drivers'
  1. Drivers
  2. DRIVERS-1385

Make retryable write test error labels behave consistently with server

    • Type: Icon: Spec Change Spec Change
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Component/s: Retryability
    • Needed
    • Hide

      Drivers should sync the retryable-writes and transaction spec tests updated in the following commits:

      Show
      Drivers should sync the retryable-writes and transaction spec tests updated in the following commits: mongodb/specifications@ab48c57 (legacy and unified tests) mongodb/specifications@5645474 (legacy tests)
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-4210 Fixed 1.26.0
      CXX-2406 Backlog
      CSHARP-3944 Backlog
      GODRIVER-2212 Backlog
      JAVA-4382 Fixed 4.4.1
      NODE-3733 Fixed 4.4.0, 5.4.0
      PHPLIB-755 Fixed 1.11.0
      PYTHON-2984 Fixed 3.12.2, 4.0
      MOTOR-849 Duplicate
      RUBY-2836 Fixed 2.18.0
      RUST-1088 Fixed 2.2.0
      SWIFT-1402 Won't Do
      $i18n.getText("admin.common.words.show")
      #scriptField, #scriptField *{ border: 1px solid black; } #scriptField{ border-collapse: collapse; } #scriptField td { text-align: center; /* Center-align text in table cells */ } #scriptField td.key { text-align: left; /* Left-align text in the Key column */ } #scriptField a { text-decoration: none; /* Remove underlines from links */ border: none; /* Remove border from links */ } /* Add green background color to cells with FixVersion */ #scriptField td.hasFixVersion { background-color: #00FF00; /* Green color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-4210 Fixed 1.26.0 CXX-2406 Backlog CSHARP-3944 Backlog GODRIVER-2212 Backlog JAVA-4382 Fixed 4.4.1 NODE-3733 Fixed 4.4.0, 5.4.0 PHPLIB-755 Fixed 1.11.0 PYTHON-2984 Fixed 3.12.2, 4.0 MOTOR-849 Duplicate RUBY-2836 Fixed 2.18.0 RUST-1088 Fixed 2.2.0 SWIFT-1402 Won't Do

      Summary

      Drivers should sync the tests updated in this commit.

      In our retryable writes spec tests, when a RetryableWriteError label is returned on a writeConcernError, we use fail points to include the label in the writeConcernError object, rather than as a top-level field on the error itself. Here's an example.

      The server always returns error labels as top-level fields, so we should modify our spec tests to do so as well so that drivers do not need to check both the writeConcernError object and the error object for the presence of an error label.

      Motivation

      User reported running while testing Atlas by looping an update one operation during a failover with the default connection string.
      "Test Failover" is often used to mimic Atlas Planned Maintenance by users who are on the Atlas Platform and consists of a very simple election/stepdown process that all clusters/user applications should be able to handle without any downtime.

      If the problem does occur, what are the consequences and how severe are they?

      The write may or may not have been propagated to the servers.

      See also SERVER-51329, SERVER-53624, SERVER-55648, HELP-23256, HELP-30952. In particular, implementations of this ticket should note the more recent observations in JAVA-4244.

            Assignee:
            isabel.atkinson@mongodb.com Isabel Atkinson
            Reporter:
            emily.giurleo@mongodb.com Emily Giurleo (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated: