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

Explain v2 does not work with Bonsai in 6.2

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Works as Designed
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • None
    • Query Optimization
    • ALL
    • Hide

      1. checkout the latest version of mongo (in my case 3ec1e222a0a6144d94888578e09c256b14bddc00) and enterprise module (f6c3a2c4f30b00917b60964e04fe0d2fca27a88b)
      2. build it
      3. run using the following command:

      ./build/install/bin/mongod --setParameter enableTestCommands=true --setParameter featureFlagCommonQueryFramework=true --setParameter internalQueryFrameworkControl=forceBonsai
      

      4. run mongosh
      5. execute in mongosh:

      db.adminCommand({'configureFailPoint': 'enableExplainInBonsai', 'mode': 'alwaysOn'});
      

      6. run a simple command like and check explain version

      db.coll.find({a: 1}).explain()
      

      older version:

      Enterprise test> db.version()
      6.1.0-alpha-2354-g763f86d
      Enterprise test> db.adminCommand({'configureFailPoint': 'enableExplainInBonsai', 'mode': 'alwaysOn'});
      { count: 0, ok: 1 }
      Enterprise test> db.adminCommand({'getParameter': 1, 'internalQueryFrameworkControl': 1});
      { internalQueryFrameworkControl: 'forceBonsai', ok: 1 }
      Enterprise test> db.adminCommand({'getParameter': 1, 'featureFlagCommonQueryFramework': 1});
      {
        featureFlagCommonQueryFramework: { value: true, version: '6.1' },
        ok: 1
      }
      Enterprise test> db.coll.find({a: 1}).explain()
      {
        explainVersion: '2',
        queryPlanner: {
          namespace: 'test.coll',
          indexFilterSet: false,
          optimizedPipeline: true,
          maxIndexedOrSolutionsReached: false,
      ...
      

      Show
      1. checkout the latest version of mongo (in my case 3ec1e222a0a6144d94888578e09c256b14bddc00) and enterprise module (f6c3a2c4f30b00917b60964e04fe0d2fca27a88b) 2. build it 3. run using the following command: ./build/install/bin/mongod --setParameter enableTestCommands=true --setParameter featureFlagCommonQueryFramework=true --setParameter internalQueryFrameworkControl=forceBonsai 4. run mongosh 5. execute in mongosh: db.adminCommand({'configureFailPoint': 'enableExplainInBonsai', 'mode': 'alwaysOn'}); 6. run a simple command like and check explain version db.coll.find({a: 1}).explain() older version: Enterprise test> db.version() 6.1.0-alpha-2354-g763f86d Enterprise test> db.adminCommand({'configureFailPoint': 'enableExplainInBonsai', 'mode': 'alwaysOn'}); { count: 0, ok: 1 } Enterprise test> db.adminCommand({'getParameter': 1, 'internalQueryFrameworkControl': 1}); { internalQueryFrameworkControl: 'forceBonsai', ok: 1 } Enterprise test> db.adminCommand({'getParameter': 1, 'featureFlagCommonQueryFramework': 1}); { featureFlagCommonQueryFramework: { value: true, version: '6.1' }, ok: 1 } Enterprise test> db.coll.find({a: 1}).explain() { explainVersion: '2', queryPlanner: { namespace: 'test.coll', indexFilterSet: false, optimizedPipeline: true, maxIndexedOrSolutionsReached: false, ...

    Description

      When I try to run cost calibration on newer versions of mongod explain always return v1, older version of mongod (e.g. 6.1) works just fine.

      Enterprise test> db.version()
      6.2.0-alpha-244-gd870dda
      Enterprise test> db.adminCommand({'configureFailPoint': 'enableExplainInBonsai', 'mode': 'alwaysOn'});
      { count: 0, ok: 1 }
      Enterprise test> db.adminCommand({'getParameter': 1, 'featureFlagCommonQueryFramework': 1});
      {
        featureFlagCommonQueryFramework: { value: true, version: '6.2' },
        ok: 1
      }
      Enterprise test> db.adminCommand({'getParameter': 1, 'internalQueryFrameworkControl': 1});
      { internalQueryFrameworkControl: 'forceBonsai', ok: 1 }
      Enterprise test> db.coll.drop()
      true
      Enterprise test> db.coll.find({a: 1}).explain()
      {
        explainVersion: '1',
        queryPlanner: {
          namespace: 'test.coll',
          indexFilterSet: false,
          parsedQuery: { a: { '$eq': 1 } },
          maxIndexedOrSolutionsReached: false,
          maxIndexedAndSolutionsReached: false,
          maxScansToExplodeReached: false,
          winningPlan: { stage: 'EOF' },
          rejectedPlans: []
        },
        command: { find: 'coll', filter: { a: 1 }, '$db': 'test' },
        serverInfo: {
          host: 'ip-10-122-6-29',
          port: 27017,
          version: '6.2.0-alpha-244-gd870dda',
          gitVersion: 'd870dda33fb75983f628636ff8f849c7f1c90b09'
        },
        serverParameters: {
          internalQueryFacetBufferSizeBytes: 104857600,
          internalQueryFacetMaxOutputDocSizeBytes: 104857600,
          internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,
          internalDocumentSourceGroupMaxMemoryBytes: 104857600,
          internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,
          internalQueryProhibitBlockingMergeOnMongoS: 0,
          internalQueryMaxAddToSetBytes: 104857600,
          internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600
        },
        ok: 1
      }
      

      Attachments

        Activity

          People

            backlog-query-optimization Backlog - Query Optimization
            alexander.ignatyev@mongodb.com Alexander Ignatyev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: