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

Aggregation can run lock-free and expects a ViewCatalog access separate from the AutoGet*MaybeLockFree to always return a valid ViewCatalog -- not guaranteed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Fixed
    • None
    • 5.3.0
    • None
    • Fully Compatible
    • ALL
    • Execution Team 2021-12-27, Execution Team 2022-01-10
    • 145

    Description

      This code does DatabaseHolder::getViewCatalog()->resolveView without checking that getViewCatalog doesn't return a nullptr. It makes this assumption because the code is gated by an autoGet->getView check.

      Two solution here.

      1) Aggregation can error when it finds the ViewCatalog no longer exists. (I rather like the simplicity). This means the collection didn't exist when the command started, and then the view went away somehow during the command. Aggregate is just about to drop locks anyway, which means anything can happen after view resolution

      2) Lock-free operations must support ViewCatalog::resolveView with the same ViewCatalog used to fetch the view – likely save the ViewCatalog shared_ptr on the AutoGet*LockFree, if we find a view.

       

      Attachments

        Issue Links

          Activity

            People

              dianna.hohensee@mongodb.com Dianna Hohensee
              dianna.hohensee@mongodb.com Dianna Hohensee
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: