Test overload retry when retryReads/Writes=false

XMLWordPrintableJSON

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

      Summary of necessary driver changes

      • Sync backpressure tests to test the requirement:

        A retry attempt will only be permitted if: [...] The command is a write and retryWrites is enabled or the command is a read and retryReads is enabled.

      • Passing these tests required non-trivial changes in the C driver and PyMongo.

      Commits for syncing spec/prose tests

      Show
      Summary of necessary driver changes Sync backpressure tests to test the requirement: A retry attempt will only be permitted if: [...] The command is a write and retryWrites is enabled or the command is a read and retryReads is enabled. To retry runCommand , both retryWrites and retryReads MUST be enabled. Passing these tests required non-trivial changes in the C driver and PyMongo. Commits for syncing spec/prose tests https://github.com/mongodb/specifications/commit/5711e4b748297600f27996412ffa179897836d4e adds the test cases. https://github.com/mongodb/specifications/commit/66317ed498196a62d3945f732781a545e8ceeb3d is a follow-up to avoid duplicate test names.
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-6268 Fixed 2.3.0
      CXX-3432 Backlog
      CSHARP-5919 Done
      GODRIVER-3834 Backlog
      JAVA-6124 Ready for Work
      NODE-7469 Fixed 7.2.0
      PYTHON-5752 Done
      PHPLIB-1804 Backlog
      RUBY-3789 In Code Review
      RUST-2378 Fixed 3.6.0
      $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-6268 Fixed 2.3.0 CXX-3432 Backlog CSHARP-5919 Done GODRIVER-3834 Backlog JAVA-6124 Ready for Work NODE-7469 Fixed 7.2.0 PYTHON-5752 Done PHPLIB-1804 Backlog RUBY-3789 In Code Review RUST-2378 Fixed 3.6.0

      Summary

      Test client backpressure overload retry when retryReads/Writes=false

      Motivation

      Review of the C driver discovered runCommand was retried on overload errors when retryReads=false or retryWrites=false, contradicting this spec requirement:

      To retry runCommand, both retryWrites and retryReads MUST be enabled

      Who is the affected end user?

      Users upgrading to drivers with client backpressure.

      How does this affect the end user?

      Confused? But may result in unexpected retries.

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

      Likely? Identified reviewing C driver implementation of client backpressure retry (see comment)

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

      Minor? Unexpected additional load on server?

      Is this issue urgent?

      I think this should be done as part of DRIVERS-3160 to ensure the spec requirement is tested.

      Is this ticket required by a downstream team?

      No?

      Is this ticket only for tests?

      Yes.

      Acceptance Criteria

      Test overload retry does not occur on runCommand when retryReads=false or retryWrites=false.

            Assignee:
            Kevin Albertson
            Reporter:
            Kevin Albertson
            Kevin Albertson Kevin Albertson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: