apache / apache/pulsar-client-node

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

Abierto
#429 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
164
Forks
98
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Empieza reproduciendo la llamada doble a client.close() de error-report.js con pulsar-client 1.14.0 en Node.js 20.18.1; después, inspecciona los puntos de entrada client.close y subscription.close y cómo sus fallos llegan a la promise. Se considera terminado cuando el fallo se puede capturar o las llamadas repetidas a close son idempotentes de forma segura, con el comportamiento verificado para el ejemplo indicado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, node.js
Área
distributed-systems
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.