apache / apache/pulsar-client-node

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

Offen
#429 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
164
Forks
98
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginnen Sie damit, den doppelten client.close()-Aufruf aus error-report.js mit pulsar-client 1.14.0 unter Node.js 20.18.1 zu reproduzieren. Untersuchen Sie anschließend die Einstiegspunkte client.close und subscription.close sowie, wie deren Fehler das Promise erreichen. Als erledigt gilt die Aufgabe, wenn der Fehler abgefangen werden kann oder wiederholte close-Aufrufe sicher idempotent sind und das Verhalten anhand des gemeldeten Beispiels verifiziert wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js
Bereich
distributed-systems
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.