Uploaded image for project: 'MongoDB Shell'
  1. MongoDB Shell
  2. MONGOSH-1814

Cannot tab complete when in a transaction and redefined db variable

    • Type: Icon: Bug Bug
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: 2.2.10
    • Component/s: None
    • None
    • Environment:
      OS: 13.6.7 (22G720)
      node.js / npm versions:
      Additional info:

      mongosh version 2.2.10
    • Developer Tools
    • 3

      Problem Statement/Rationale

      When starting a transaction and redefining the db variable, tabcomplete throws an error

      foo [direct: primary] test> se = db.getMongo().startSession({retryWrites: true, causalConsistency: true})
      { id: UUID("985d5844-8de9-4c87-a136-fc5dc2346989") }
      foo [direct: primary] test> se.startTransaction()
      
      foo [direct: primary] test> db = se.getDatabase("mongo");
      mongo
      foo [direct: primary] mongo> version()
      2.2.10
      foo [direct: primary] mongo> db.versTab completion error: MongoTransactionError: Read preference in a transaction must be primary, not: primaryPreferred
          at t.executeOperation (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3597310)
          at ListCollectionsCursor._initialize (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3511674)
          at [kInit] (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3499898)
          at v (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3500522)
          at ListCollectionsCursor.next (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3497824)
          at [Symbol.asyncIterator] (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3496931)
          at AsyncGenerator.next (<anonymous>)
          at ListCollectionsCursor.toArray (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:3:3498293)
          at CliServiceProvider.listCollections (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:213:205759)
          at Proxy._listCollections (eval at module.exports (node:lib-boxednode/mongosh:103:20), <anonymous>:213:305405) {
        [Symbol(errorLabels)]: Set(0) {}
      }
      

      Please be sure to attach relevant logs with any sensitive data redacted.
      n/a?

      Steps to Reproduce

      see above

      Expected Results

      I get a tab completion (or list of options) for the command I want

      Actual Results

      Stack trace as shown above

      Additional Notes

      As per Anna H in this slack convo

      Did you assign db = ... before, as part of starting a transaction? I think that would reset the autocompletion cache for database/collection names, so autocompleting anything would try to refresh that cache, which runs listCollections/listDatabases with primaryPreferred (that's mongosh's choice, we set it explicitly for these commands)

      Definitely not expected behavior, though, so MONGOSH ticket is probably the way to go

            Assignee:
            Unassigned Unassigned
            Reporter:
            joanna.cheng@mongodb.com Joanna Cheng
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: