sql-pg: pool is not closed when the "SELECT 1" readiness probe fails in PgClient.make
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- postgresql, typescript
- Área
- database
Línea de trabajo
Comienza en packages/sql/pg/src/PgClient.ts, en PgClient.make, y sigue la creación del pool, la adquisición de SELECT 1 y el finalizador de liberación. Verifica la ruta de error de la readiness probe y asegúrate de que el pool construido se cierre allí, preservando el comportamiento de limpieza existente tras una adquisición exitosa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Package
@effect/sql-pg 0.53.0 (the same structure is present in the v4 sources at packages/sql/pg/src/PgClient.ts).
Description
In PgClient.make, the pg.Pool is constructed before the acquisition effect:
const pool = new Pg.Pool({ ... })
pool.on("error", () => {})
yield* Effect.acquireRelease(
Effect.tryPromise({
try: () => pool.query("SELECT 1"),
catch: (cause) => new SqlError({ ... })
}),
() => Effect.promise(() => pool.end()).pipe(...)
).pipe(...)
Per Effect.acquireRelease semantics, the release finalizer is registered only after a successful acquire — so when the SELECT 1 readiness probe fails, pool.end() is never called and the already-constructed pool object is orphaned.
Impact
Small in practice (pg pools are lazy — a pool that never acquired a client holds no sockets or timers, so the orphaned object is garbage-collectable), but:
- callers that retry a failed layer build (e.g. a self-healing wrapper around
ManagedRuntimethat replaces the runtime after a failed build) accumulate pool instances across attempts, - the
pool.end()finalizer signals the intent to always release the pool, so a failed probe silently violating that contract is surprising.
Suggested fix
End the pool when the probe fails, e.g.:
Effect.acquireRelease(
Effect.tryPromise({
try: () => pool.query("SELECT 1"),
catch: (cause) => new SqlError({ ... })
}).pipe(Effect.tapErrorCause(() => Effect.promise(() => pool.end()))),
() => ...
)
or construct the pool inside the acquire effect.
- Lenguaje dominante
- TypeScript
- Estrellas
- 16.7k
- Forks
- 808
- Merge medio
- 11 h 28 min
- PR fusionados (30 d)
- 490
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Effect-TS/effect
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 86/100
Effect-TS/effect#8863 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
BrowserWorkerRunner: port finalizer throws when the worker global has no close() (Bun)Posiblemente ocupada @santiago-ramos-02 la tomó hace 9 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Effect-TS/effect#8635 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Support {self: this} for fnUntracedQuizá libre de nuevo @ArjunCodess la tomó hace 20 días y no hay ningún pull request abierto. Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Effect-TS/effect#8101 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
add Effect-native McpClientPosiblemente ocupada @lloydrichards la tomó hace 3 días. Abiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
Effect-TS/effect#8912 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
Todos los issues de Effect-TS/effect
Issues similares
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:other issue-rating: 🦞 diamond lobster no-stale P2
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
openclaw/openclaw#168089 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
✨ enhancement needs-discussion
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
[Bug]: [MCP/CLI] Bare loopback IP addresses (127.0.0.1:port) and hosts with ports fail to navigate due to erroneous scheme inferencePosiblemente ocupada @alok-108 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/playwright#43263 ·
Los mantenedores suelen responder en 1 día
-
area:studio type:security
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue Stellar Wave trivial
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
StellarCanary/ProtocolCanary-Action#331 ·
Los mantenedores suelen responder en 1 día