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

SDAM should prioritize electionId over setVersion only on >=6.0 servers

    • Type: Icon: Improvement Improvement
    • Resolution: Unresolved
    • Priority: Icon: Unknown Unknown
    • None
    • Component/s: SDAM
    • None
    • Needed
    • Hide
      • Sync spec changes in 37c32c
      • Confirm tests fail with current updateRSFromPrimary implementation
      • Summary of updateRSFromPrimary changes:
        • If maxWireVersion 17 or greater
        • Prioritize electionId before setVersion
        • Handle nullish values for both setVersion and electionId
        • always set maxElectionId and maxSetVersion together (they are a tuple value)
      • Confirm tests pass with changes

      Join #drivers-2412-sdam-should-prioritize-electionid-over-setversion on slack for any questions

      Show
      Sync spec changes in 37c32c Confirm tests fail with current updateRSFromPrimary implementation Summary of updateRSFromPrimary changes: If maxWireVersion 17 or greater Prioritize electionId before setVersion Handle nullish values for both setVersion and electionId always set maxElectionId and maxSetVersion together (they are a tuple value) Confirm tests pass with changes Join #drivers-2412-sdam-should-prioritize-electionid-over-setversion on slack for any questions
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-4455 Fixed 1.24.0
      CXX-2566 Blocked
      CSHARP-4298 Done 2.20.0
      GODRIVER-2524 Fixed 1.11.0
      JAVA-4707 Fixed 4.8.0
      NODE-4546 Fixed 4.11.0
      MOTOR-1018 Duplicate
      PYTHON-3400 Fixed 4.3
      PHPC-2145 Done 1.16.0
      RUBY-3090 Fixed 2.19.0
      RUST-1446 Backlog
      SWIFT-1626 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-4455 Fixed 1.24.0 CXX-2566 Blocked CSHARP-4298 Done 2.20.0 GODRIVER-2524 Fixed 1.11.0 JAVA-4707 Fixed 4.8.0 NODE-4546 Fixed 4.11.0 MOTOR-1018 Duplicate PYTHON-3400 Fixed 4.3 PHPC-2145 Done 1.16.0 RUBY-3090 Fixed 2.19.0 RUST-1446 Backlog SWIFT-1626 Won't Do

      In DRIVERS-1954, we discovered that the electionId/setVersion change could not be implemented or else drivers would break when replica set restore is run using a pre 6.0 compatible version of Ops Manager.

      Instead of waiting until until these old versions of Ops Manager are EOL, I propose we only implement the new electionId/setVersion comparison logic on >=6.0 servers. This will avoid the regression assuming that old Ops Manager versions do not support backup/restore >=6.0 servers.

      Using this approach we can fix the original bug in DRIVERS-1954 on >=6.0 servers. Drivers will still be vulnerable to the bug on <6.0 servers but that's okay because we're already in that position now.

            Assignee:
            neal.beeken@mongodb.com Neal Beeken
            Reporter:
            shane.harvey@mongodb.com Shane Harvey
            Votes:
            1 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: