ExportXMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: 7.6.0
    • Component/s: SDAM
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Use Case

      Expected Behavior

      After a mongos restart, the latency measurement on a server connection should be updated at regular intervals as it was before the restart.

      Actual Behavior and Impact

      During a rolling mongos restart, a server node enters quiesce mode and answers the RTT pinger's hello with ShutdownInProgress.

      RTTPinger.measureRoundTripTime's onrejected callback destroys the connection, sets it to undefined, and returns without setting another measureAndReschedule (which is what calls measureRoundTripTime).

      latestRtt retains its last measurement, and if that measurement is low enough, it becomes the winning low latency server to connect to according to latencyWindowReducer (server_selection.ts), even if it is not the lowest latency server anymore.

      This likely implicitly impacts many users. The current workaround is to restart the application, which flushes the stuck latestRtt value.

      Dependencies

      • none

      Risks/Unknowns

      Acceptance Criteria

      Implementation Requirements

      • RTTPinger moves its scheduling mechanism to a place outside of a success/fail block so that it runs unconditionally until the connection is closed explicitly.

      Testing Requirements

      Documentation Requirements

      •  

      Follow Up Requirements

      •  

            Assignee:
            Unassigned
            Reporter:
            Sean Milligan
            None
            Votes:
            2 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated: