Add prose tests to verify correct retry behavior when a mix of overload and non-overload errors are encountered

XMLWordPrintableJSON

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

      Summary of necessary driver changes

      •  

      Commits for syncing spec/prose tests
      (and/or refer to an existing language POC if needed)

      •  

      Context for other referenced/linked tickets

      •  
      Show
      Summary of necessary driver changes   Commits for syncing spec/prose tests (and/or refer to an existing language POC if needed)   Context for other referenced/linked tickets  
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-6291 Blocked 2.3.0
      CXX-3465 Blocked
      CSHARP-5977 Blocked
      GODRIVER-3859 Blocked
      JAVA-6166 Blocked
      NODE-7534 Blocked
      PYTHON-5794 In Code Review
      PHPLIB-1826 Blocked
      RUBY-3803 In Progress
      RUST-2400 Blocked
      $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 */ } #scriptField td.willNotDo { background-color: #FF0000; /* Red color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-6291 Blocked 2.3.0 CXX-3465 Blocked CSHARP-5977 Blocked GODRIVER-3859 Blocked JAVA-6166 Blocked NODE-7534 Blocked PYTHON-5794 In Code Review PHPLIB-1826 Blocked RUBY-3803 In Progress RUST-2400 Blocked

      Summary

      What is the problem or use case, what are we trying to achieve?
      Currently, the spec is somewhat ambiguous in its requirement that encountering any overload error during an operation's retry loop MUST set the maximum number of retries to maxAdaptiveRetries, even if CSOT is enabled and even if subsequent or preceding errors were retryable non-overload errors. This has caused at least two drivers (Python and Ruby) to implement their retry logic incorrectly, and since no tests exist to verify the correct behavior, it is difficult to catch.

      Clarifying the specification's wording to be more explicit and adding two new prose tests to verify the correct behavior will prevent other drivers from making this mistake.

      Motivation

      Who is the affected end user?

      Who are the stakeholders?
      All users that experience both overload and non-overload retryable errors during a single operation.

      How does this affect the end user?

      Are they blocked? Are they annoyed? Are they confused?
      Drivers that do not conform to the spec will retry less often, producing more application errors.

      How likely is it that this problem or use case will occur?

      Main path? Edge case?

      This could easily occur during any period of server overload.

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

      Minor annoyance at a log message? Performance concern? Outage/unavailability? Failover can't complete?

      Increased application errors and less successful driver operations during transient overload periods.

      Is this issue urgent?

      Does this ticket have a required timeline? What is it?

      Must be completed before drivers release their backpressure-compliant versions..

      Is this ticket required by a downstream team?

      Needed by e.g. Atlas, Shell, Compass?
      No.

      Is this ticket only for tests?

      Does this ticket have any functional impact, or is it just test improvements?

      No.

      Acceptance Criteria

      What specific requirements must be met to consider the design phase complete?

      Two new prose tests verifying correct driver behavior when a mix of overload and non-overload errors are encountered during a single operation's retry loop.

            Assignee:
            Noah Stapp
            Reporter:
            Noah Stapp
            Daria Pardue Daria Pardue
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: