loopbackio / loopbackio/loopback-next
Jest detects open handles when disconnecting a MongoDB datasource
Nadie ha tomado este issue todavía.
- 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
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- 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