lookup_view_field_match_order.js fails under the disagg override suite because its internal-client aggregate omits an explicit readConcern

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 9.1.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Optimization
    • Fully Compatible
    • ALL
    • 200
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      jstests/sharding/query/lookup/lookup_view_field_match_order.js fails in the no_passthrough_disagg_override_sharded suite with 2 failing mocha tests:

      errmsg: "received command without explicit readConcern on an internalClient connection ..."
      code: 4569200 (Location4569200)
      

      The failing cases are the two "on a standalone mongod" cases that simulate the router -> shard wire protocol: they flag their connection as an internal client (hello with internalClient: {...}) and send a raw aggregate containing $_internalFromIsAView / $_internalFieldMatchPipelineIdx. The command carries an explicit writeConcern but no explicit readConcern.

      Root cause. The server enforces (uassert 4569200 in src/mongo/db/service_entry_point_shard_role.cpp) that commands arriving on an internalClient connection must explicitly specify a readConcern (even an empty readConcern: {}). The check is gated on ReplicationCoordinator::getSettings().isReplSet():

      • In ordinary suites the test's control section runs against a true standalone, so isReplSet() is false, the check is skipped, and the missing readConcern is tolerated.
      • Under the disagg override, disagg_storage_override.js replaces MongoRunner.runMongod() with a single-node DisaggReplSetTest replica set (disagg has no local durable dbpath). The same node is now a replica-set member, isReplSet() is true, and the check fires.

      Sequence of events.

      1. Override intercepts MongoRunner.runMongod({}) -> DisaggReplSetTest lookup_view_field_match_order_standalone_1 (1 node).
      2. The 3 plain $lookup cases pass (normal shell connection, defaults applied).
      3. Test opens a second connection and marks it internal via hello + internalClient.
      4. runInternalClientAggregate sends the aggregate without readConcern -> uassert 4569200.
      5. Both internal-client cases fail -> "Error: 2 failing tests detected" -> task fails.

      Fix. Add readConcern: {} to runInternalClientAggregate, mirroring the explicit writeConcern the test already sends. An empty readConcern satisfies the internal-client contract on replica-set-backed nodes and is a no-op on a true standalone.

            Assignee:
            Matt Olma
            Reporter:
            Matt Olma
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: