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

Abierto
#429 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

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

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.

Descripción

Not sure what would be better here, that either the exception should be catchable or it should be idempotent.

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();

{
  "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

Lenguaje dominante
C++
Estrellas
164
Forks
99
Merge medio
5 d 18 h
PR fusionados (30 d)
2

Guía de contribución

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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/pulsar-client-node

Todos los issues de apache/pulsar-client-node

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.