2 Commits
1.0.1 ... 1.0.2

Author SHA1 Message Date
1d7c955805 Bugfix: don't try to cull connections from an empty pool.
The first step in culling connections was to take a subset of the pool's
connections from index 0 to numToCull. This leads to an error if
numToCull is also zero.
2022-06-04 10:46:00 -05:00
9625ac6a5e withPool executes provided statement block in a try/finally to ensure the connection is released. 2022-04-25 18:22:34 -05:00
2 changed files with 13 additions and 11 deletions

View File

@ -1,6 +1,6 @@
# Package
version = "1.0.1"
version = "1.0.2"
author = "Jonathan Bernard"
description = "Lightweight Postgres ORM for Nim."
license = "GPL-3.0"

View File

@ -62,6 +62,8 @@ proc maintain(pool: DbConnPool): void =
let freeConns = pool.conns.filterIt(it.free)
if pool.conns.len > pool.cfg.poolSize and freeConns.len > 0:
let numToCull = min(freeConns.len, pool.conns.len - pool.cfg.poolSize)
if numToCull > 0:
let toCull = freeConns[0..numToCull]
pool.conns.keepIf((pc) => toCull.allIt(it.id != pc.id))
for culled in toCull:
@ -93,5 +95,5 @@ proc release*(pool: DbConnPool, connId: int): void =
template withConn*(pool: DbConnPool, stmt: untyped): untyped =
let (connId, conn {.inject.}) = take(pool)
stmt
release(pool, connId)
try: stmt
finally: release(pool, connId)