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

Make async_rpc::sendHedgeCommand kill unused cursors

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major - P3
    • Resolution: Duplicate
    • 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

        Issue Links

          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: