loopbackio / loopbackio/loopback-next

Jest detects open handles when disconnecting a MongoDB datasource

Ouverte
#9,347 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
Langage dominant
TypeScript
Étoiles
5.1k
Forks
1.1k
Merge moyen
2 j 21 h
PR mergées (30 j)
27

Description

Describe the bug

When closing a connection to a MongoDB database, Jest reports that there are still open handles.

Packages

"dependencies": {
    "@loopback/repository": "^5.1.4",
    "loopback-connector-mongodb": "^6.2.0"
  },
  "devDependencies": {
    "jest": "^29.5.0"
  }

Test example

const {juggler} = require("@loopback/repository");

describe('Should close without open handles', () => {

    let datasource;

    beforeAll(async () => {
        datasource = new juggler.DataSource({
            name: "mongo",
            connector: "mongodb",
            url: "",
            host: "127.0.0.1",
            port: 27017,
            user: "",
            password: "",
            database: "customers",
            useNewUrlParser: true,
            authSource: "admin",
        })

        await datasource.connect();
    });

    afterAll(async () => {
        await datasource.disconnect();
        await datasource.stop();
    });

    it('Handles are still open', () => {
        expect(true).toBe(true);
    });
});

This does not happen with a memory data store (as I assume there is no actual connection).

Expectation

The test completes without any errors/warnings

Reality

Jest complains that there are still open handles

Jest has detected the following 1 open handle potentially keeping Jest from exiting:

  ●  TCPWRAP

       6 |
       7 |     beforeAll(async () => {
    >  8 |         datasource = new juggler.DataSource({
         |                      ^
       9 |             name: "mongo",
      10 |             connector: "mongodb",
      11 |             url: "",

      at makeConnection (node_modules/mongodb/lib/core/connection/connect.js:310:20)
          at Array.reduce (<anonymous>)
      at Object.<anonymous> (__tests__/example.test.js:8:22)
Repository with minimal reproducible error

https://github.com/MattLishmanCtM/lb-connection-error

Node version: v18.12.0
OS: MacOS Ventura

Is there something I am missing about this?
Is there some other form of disconnecting/stopping that I should be doing?

I realise the officially supported package for LoopBack as a whole is Mocha but I need to use the repository package as a standalone with Jest.

Logs

No response

Additional information

No response

Reproduction

https://github.com/MattLishmanCtM/lb-connection-error

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la reproduction minimale et tests/example.test.js, puis examinez le cycle de vie de datasource.connect(), disconnect() et stop() utilisé dans le test. Reproduisez l’exécution de Jest avec la datasource MongoDB et vérifiez que le test se termine sans l’avertissement TCPWRAP signalé concernant un handle ouvert.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, mongodb, node.js
Domaine
backend, database, testing
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.