Uploaded image for project: 'Node.js Driver'
  1. Node.js Driver
  2. NODE-2544

Can't reuse mongo client after close

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: 3.5.5
    • Fix Version/s: 4.0.0
    • Component/s: None
    • Labels:
    • Environment:
      mongodb@3.5.5 (npm package)
    • Documentation Changes:
      Not Needed

      Description

      I'm having the following problem.
      I want to reuse the MongoClient instance after manually closing the connection by connecting again and strange errors appear.

      const { MongoClient } = require('./lib/node_modules/mongodb');
       
      const main = async () => {
          const url = '...';
       
          const client = new MongoClient(url, { useUnifiedTopology: true });
          await client.connect();
       
          const db = client.db('testdb');
          const demo = db.collection('demo');
       
          console.log('count', await demo.countDocuments({}));
          // > count 81
       
          await client.close();
       
          await client.connect();
          // > the options [servers] is not supported
          // > the options [caseTranslate] is not supported
          // > the options [dbName] is not supported
          // > the options [credentials] is not supported
       
          console.log('count', await demo.countDocuments({}));
          // > MongoError: Topology is closed, please connect
          // >     at processWaitQueue (node_modules/mongodb/lib/core/sdam/topology.js:998:42)
          // >     at NativeTopology.selectServer (node_modules/mongodb/lib/core/sdam/topology.js:440:5)
          // >     at executeWithServerSelection (node_modules/mongodb/lib/operations/execute_operation.js:137:12)
          // >     at executeOperation (node_modules/mongodb/lib/operations/execute_operation.js:75:7)
          // >     at Collection.countDocuments (node_modules/mongodb/lib/collection.js:1569:10)
          // >     at main (test.js:23:37)
          // >     at processTicksAndRejections (internal/process/task_queues.js:93:5) {
          // >   name: 'MongoError',
          // >   [Symbol(mongoErrorContextSymbol)]: {}
          // > }    await client.close();
      }
      main().catch(console.error);
      

      I understand by the error "MongoError: Topology is closed, please connect" that this should be possible. But somehow it doesn't work.

      Using mongodb@3.5.5 (npm package).

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              hana.pearlman Hana Pearlman
              Reporter:
              tomas.g.vivo@gmail.com Tomas Gonzalez Vivo
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: