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

aggregate() namespace resolution and collMod are not synchronized (anymore)

    • Type: Icon: Bug Bug
    • Resolution: Gone away
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Querying
    • None
    • ALL
    • Execution Team 2020-04-06
    • 24

      Since we no longer take a DB MODE_X lock for collMod (see SERVER-46865), the code for resolving namespaces in aggregate(), which takes a DB MODE_IS lock, does not necessarily see a consistent "view" of the view catalog. See link.

      This means that aggregate() can execute a pipeline on a set of view definitions that are not valid/nonsensical and possibly even contain a cycle.

      One potential fix would be to have the view resolution in run_aggregate be performed while holding a collection IS lock on system.views. I believe this will fix the issue as long as collMod continues taking a collection X lock (see here).

            Assignee:
            gregory.noma@mongodb.com Gregory Noma
            Reporter:
            ian.boros@mongodb.com Ian Boros
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: