loopbackio / loopbackio/loopback-next

Jest detects open handles when disconnecting a MongoDB datasource

Abierto
#9,347 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
TypeScript
Estrellas
5.1k
Forks
1.1k
Merge medio
2 d 21 h
PR fusionados (30 d)
27

Descripción

### 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 ()
at Object. (__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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con la reproducción mínima y __tests__/example.test.js; después, inspecciona el ciclo de vida de datasource.connect(), disconnect() y stop() utilizado en la prueba. Reproduce la ejecución de Jest con el datasource de MongoDB y verifica que la prueba finalice sin la advertencia reportada de TCPWRAP por un handle abierto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, mongodb, node.js
Área
backend, database, testing
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.