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

Make the plan cache commands on mongos send database version and move them off connection versioning

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.3.1
    • Affects Version/s: None
    • Component/s: Sharding
    • None
    • Fully Compatible
    • Sharding 2019-09-23, Sharding 2019-10-07

      We should replace the plan cache commands' use of Strategy::commandOp/ParallelSortClusteredCursor/DBClient with scatterGatherVersionedTargetByRoutingTable/MultiStatementTransactionRequestsSender/TaskExecutor (see example).

      There are two reasons to take this opportunity to switch these commands to the new path:

      1) scatterGatherVersionedTargetByRoutingTable already attaches database version when appropriate, whereas the Strategy::commandOp path does not support database versioning.

      2) The Strategy::commandOp path uses the legacy shard versioning protocol (connection versioning). The plan cache commands are one of the few remaining users of connection versioning. It would be great to remove all remaining users so we can delete the legacy connection versioning code.

            Assignee:
            cheahuychou.mao@mongodb.com Cheahuychou Mao
            Reporter:
            esha.maharishi@mongodb.com Esha Maharishi (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: