apache / apache/pulsar-client-node
Exceptions like client.close/subscription.close cannot be catched
- Langage dominant
- C++
- Étoiles
- 164
- Forks
- 98
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Not sure what would be better here, that either the exception should be catchable or it should be idempotent.
```javascript
const Pulsar = require("pulsar-client");
const STAGING = {
serviceUrl: "pulsar+ssl://any-server:6651",
};
async function main() {
const client = new Pulsar.Client({
...STAGING,
logLevel: Pulsar.LogLevel.ERROR,
log: (level, file, line, message) => {
console.log(`[${level}] ${file}:${line}: ${message}`);
},
});
try {
await client.close();
await client.close();
} catch (error) {
console.error("omg closing client:", error);
}
}
main();
```
```json
{
"dependencies": {
"pulsar-client": "^1.14.0"
}
}
```
Will throw
```
node error-report.js
node:internal/process/promises:391
triggerUncaughtException(err, true /* fromPromise */);
^
[Error: Failed to close client: AlreadyClosed]
Node.js v20.18.1
```
Even though I catched it
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par reproduire le double appel à client.close() de error-report.js avec pulsar-client 1.14.0 sur Node.js 20.18.1, puis examinez les points d’entrée client.close et subscription.close ainsi que la façon dont leurs échecs atteignent la promise. Le travail est terminé lorsque l’échec peut être intercepté ou que les appels répétés à close sont idempotents de manière sûre, avec le comportement vérifié pour l’exemple signalé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js
- Domaine
- distributed-systems
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100