Provide test/debug option for Catalog to always return deep copy

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Catalog and Routing
    • 🟦 Shard Catalog
    • None
    • None
    • None
    • None
    • None
    • None

      In SERVER-105873, we encountered a bug where the query engine was caching raw pointers to objects owned by the catalog. These objects could be deleted during a yield and concurrent DDL, resulting in a dangling pointer and use-after-free.

      In order to preemptively catch more of these class of bugs, it would be useful for the catalog to provide a mode with all copy-on-write and caching disabled and provide a deep copy on every access. This would result in every yield removing the only reference to that version of the catalog, destroying it. This would catch unsafe uses of the catalog.

      We could use this mode in debug variants and/or the config fuzzer.

      Ideas based on discussion with max.hirschhorn@mongodb.com.

            Assignee:
            Unassigned
            Reporter:
            Ben Shteinfeld
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: