kisenon

Solución de problemas

Modos de fallo comunes de la era alpha y cómo recuperarse.

Kisenon está en alpha. Aquí están los modos de fallo con los que más probablemente topará, y cómo superar cada uno.

Endpoint atascado en Pending

Síntoma: un endpoint se queda en Pending durante más de unos segundos en la creación. La consola no muestra error; la CLI muestra el mismo estado.

Causa probable: el pod de cómputo no puede programarse. Las razones más comunes son la presión del clúster (ningún nodo tiene la CPU o memoria solicitadas libres) o una credencial de descarga de imagen obsoleta. Ambas son problemas del lado del operador.

Qué hacer:

  1. Espere 60 segundos. La presión transitoria normalmente se despeja una vez que otro endpoint se suspende.
  2. Si no se despeja, elimine el endpoint y recréelo. El plano de control reintentará la programación en un nodo diferente.
  3. Si la recreación también aterriza en Pending, el clúster está descontento. Presente un reporte en el rastreador de GitHub con el id del endpoint y la hora de reloj.

FATAL: endpoint unavailable en la primera conexión

Síntoma: psql devuelve FATAL: endpoint unavailable en la primera conexión a un endpoint recién creado, o tras una larga inactividad.

Causa probable: carrera de arranque en frío. El estado del endpoint es Stopped, su paquete lo despertó, pero Postgres aún está reproduciendo el WAL hasta el HEAD de la rama cuando su cliente se rinde.

Qué hacer: reintente la conexión. El arranque en frío normalmente se completa en 300–500 ms, pero el primer despertar de un proyecto recién creado, o tras una inactividad de 24 h+, puede tardar 10–30 segundos mientras la caché de páginas del pageserver se calienta. La mayoría de los controladores toleran esto si permite al menos un reintento; psql en crudo no reintenta por defecto.

# psql with one explicit retry
for i in 1 2; do psql "$URI" -c '\q' && break; sleep 5; done

Si el endpoint sigue no disponible tras 30 segundos, el propio pod puede haber fallado — compruebe el estado en la consola y consulte la guía de Pending de arriba.

keon connection-string devuelve branch_not_found

Síntoma:

$ keon connection-string my-feature --project prj_abc...
Error: branch_not_found: my-feature

…pero la rama existe en la consola.

Causa probable: el nombre no coincide con una rama en el proyecto al que apuntó — normalmente un error tipográfico, o el --project incorrecto. La CLI resuelve una rama por id o por nombre, lo pase como argumento posicional o mediante --branch, así que un nombre que sí existe se resolverá de cualquier manera.

Qué hacer: confirme el nombre de la rama y el proyecto:

keon branches list --project prj_abc...
keon connection-string my-feature --project prj_abc...

El inicio de sesión devuelve access_denied

Síntoma: el OAuth de Google o GitHub se completa, pero la consola redirige a una página de error citando access_denied.

Causa probable: durante la alpha, el inicio de sesión está restringido por una lista de permitidos de correos. Si su dirección no ha sido dada de alta, la callback de inicio de sesión la rechaza por principio.

Qué hacer: solicítelo en Acceso alpha. Una vez que su dirección se añade a la lista de permitidos, el inicio de sesión se completa normalmente en el siguiente intento.

La sesión de la consola expira a mitad de sesión

Síntoma: la consola funciona durante un rato, luego de repente devuelve 401 en cada llamada de API hasta que cierra sesión y vuelve a iniciarla.

Causa probable: el JWT firmado por cp expiró y su ventana de renovación ha caducado. La consola acuña un JWT de vida corta (≈15 minutos) y, mientras está activo, lo renueva en segundo plano contra /v1/auth/refresh. La ventana de renovación está fijada en 12 horas desde el inicio de sesión: una sesión activa se renueva indefinidamente, pero una pestaña dejada sin tocar más allá de esa ventana ya no puede renovarse.

Qué hacer: cierre sesión y vuelva a iniciarla. Para automatización sin interfaz o de larga duración, use una clave de API nsk_ en vez de una sesión de navegador — las claves de API no expiran y se revocan explícitamente. Consulte Autenticación.

Dónde presentar errores

Para cualquier cosa no cubierta aquí:

  • Errores de producto y solicitudes de funciones: el rastreador de GitHub.
  • Vulnerabilidades de seguridad: Seguridad — nunca en el rastreador público.

Los pasos de reproducción concretos, los ids afectados (proyecto, rama, endpoint), y una marca de tiempo de reloj acortan dramáticamente el ida-y-vuelta.