Commit Graph
2 Commits
Author SHA1 Message Date
clawbot 60d707b314 fix: use absolute paths and static linking in Dockerfile
check / check (push) Successful in 1m3s
The container failed to start with 'exec ./webhooker: no such file or
directory'. Two issues:

1. Relative paths: COPY destination and CMD used relative paths (./webhooker).
   Changed to absolute paths (/app/webhooker) throughout.

2. Dynamic linking: The binary was built with CGO on Debian (glibc) but
   deployed to Alpine (musl). The kernel couldn't find the glibc dynamic
   linker, producing the misleading 'no such file or directory' error.
   Added a static rebuild step after make check so the binary runs on
   Alpine without glibc.
2026-03-17 04:42:51 -07:00
clawbot 10db6c5b84 refactor: bounded worker pool with DB-mediated retry fallback
check / check (push) Successful in 58s
Replace unbounded goroutine-per-delivery fan-out with a fixed-size
worker pool (10 workers). Channels serve as bounded queues (10,000
buffer). Workers are the only goroutines doing HTTP delivery.

When retry channel overflows, timers are dropped instead of re-armed.
The delivery stays in 'retrying' status in the DB and a periodic sweep
(every 60s) recovers orphaned retries. The database is the durable
fallback — same path used on startup recovery.

Addresses owner feedback on circuit breaker recovery goroutine flood.
2026-03-01 22:52:27 -08:00