apache / apache/pulsar-client-node
Exceptions like client.close/subscription.close cannot be catched
- 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