apache / apache/pulsar-client-node
Exceptions like client.close/subscription.close cannot be catched
- Lingua principale
- C++
- Stelle
- 164
- Fork
- 98
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
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
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia riproducendo la doppia chiamata a client.close() da error-report.js con pulsar-client 1.14.0 su Node.js 20.18.1, quindi esamina i punti di ingresso client.close e subscription.close e il modo in cui i relativi errori raggiungono la promise. Il lavoro è completato quando l’errore può essere intercettato oppure le chiamate ripetute a close sono idempotenti in modo sicuro, con il comportamento verificato per l’esempio segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript, node.js
- Ambito
- distributed-systems
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100