Commit 3abffb6
committed
fix: rewrite SFTP connection pool for production resilience
- Add keepalive goroutine (5 min ping) to prevent Hetzner idle timeout
- getClient() returns nil on exhausted retries instead of dead client
- putClient() health-checks before returning to pool, auto-replaces dead connections
- Background fillPool() restores capacity without blocking callers
- Partial pool init allowed (no longer fails if 1 of 4 connections fails)
- Reader/Writer hold client until file closed (poolReadCloser/poolFileWriter)
- Pool.Alive() exposes current healthy connection count
- Pool.Close() for graceful shutdown1 parent fcc9d95 commit 3abffb6
1 file changed
Lines changed: 915 additions & 867 deletions
0 commit comments