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

Make async_rpc::sendHedgeCommand kill unused cursors

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Duplicate
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • None
    • Service Arch

    Description

      When async_rpc::sendHedgedCommand receives a response that will be used to satisfy the command, it cancels outstanding network operations. If these cancellations succeed, the NetworkInterface should clean up the underlying commands by sending _killOperations. However, if the network operations we're trying to cancel complete before our cancellation arrives, we need to explicitly send _killOperations to ensure we don't leak any cursors established by the completed operation. 

      Let's ensure that async_rpc::sendHedgedCommand always sends _killOperations when there a network operation it initiated that:

      • has started an ongoing operation on a remote node, or opened a cursor on a remote node
      • is not used to produce the response for the command

      In such cases, _killOperations will ensure that the network operation that is not used to produce the response cannot leak any state, by cleaning up any remote cursors and ongoing remote operations it may have initiated.  

      Attachments

        Activity

          People

            backlog-server-servicearch Backlog - Service Architecture
            george.wangensteen@mongodb.com George Wangensteen
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: