loopbackio / loopbackio/loopback-next
Jest detects open handles when disconnecting a MongoDB datasource
Personne n'a encore pris cette issue.
- 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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- 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