apache / apache/pulsar-client-node

Exceptions like client.close/subscription.close cannot be catched

Aperta
#429 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.