Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-46740

establishCursors() must always drain the AsyncRequestsSender::_baton

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.9.0, 4.0.23, 4.4.4, 4.2.13
    • Component/s: None
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Backport Requested:
      v4.4, v4.2, v4.0
    • Sprint:
      Service Arch 2020-04-06, Service arch 2020-04-20, Service arch 2020-05-04, Service arch 2020-05-18, Service arch 2020-12-28, Service Arch 2021-01-25, Security 2021-01-25, Security 2021-02-08, Security 2021-02-22
    • Case:
    • Linked BF Score:
      46

      Description

      establishCursors() has a best effort try-catch-throw block here. However, our underlying pattern for the ARS is prone to throwing after interruption. We should introduce a separate draining pattern for the ARS and use it from establishCursors().

      This is usually a seen as an invariant in this block in mongo/transport/baton_asio_linux.h:

      Invariant failure _scheduled.empty() src/mongo/transport/baton_asio_linux.h 116
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              ben.caimano Benjamin Caimano (Inactive)
              Reporter:
              ben.caimano Benjamin Caimano (Inactive)
              Participants:
              Votes:
              3 Vote for this issue
              Watchers:
              19 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: