Avoid emitting $_internalIsHybridSearch via serializeForReparse

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Works as Designed
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Integration
    • ALL
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      SERVER-108117 validates that $_internalIsHybridSearch in $lookup and $unionWith, uasserts when a non-internal client supplies it. SERVER-126247 added a serializeForReparse option that ensures pipelines the server serializes and then immediately re-parses locally don't carry internal-only fields into a parse done under the external client.

      This is a problem because pipeline_resolver serializes the whole user pipeline with serializeForReparse after a mongos view kickback, and the retry loop in cluster_aggregate re-parses that BSON on the same OperationContext — still the external client. Although the explain serialization path suppresses emitting $_internalIsHybridSearch, the aforementioned serializeForReparse path does not. Thus, we appear to emit a field we then reject ourselves.

      This issue was fixed on v8.3 but still applies to v9.0/master.

            Assignee:
            Unassigned
            Reporter:
            Adithi Raghavan
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: