- Generated service names come only from a URL host, a key=value DSN's
host=, or a MySQL tcp() address, so a password in a key=value DSN can no
longer end up in the name printed on every log line.
- connect_timeout is added only to postgres:// and postgresql:// URLs
(parsed, so it never lands after a fragment) or as a key=value token, never
glued onto a key=value value containing "://".
- Driver parse errors that quote password fragments (mongo escape errors,
lib/pq's missing "=" error) are replaced with generic hints.
- MongoDB keeps its client only after a successful connect, so a failed
connect is not disconnected twice.
- Couchbase gets ready_timeout plus 1 minute to connect, so raising
ready_timeout takes effect.
- Shutdown waits at most 7 seconds, inside Docker's 10-second grace period.
- Each adapter declares its config keys; unknown keys anywhere in the file,
including under config, log a warning without blocking start.
- Each connect attempt, including initialization, times out after 1 minute,
and PostgreSQL DSNs without connect_timeout get connect_timeout=30, since
lib/pq honours the context only while dialing.
- A service increments right after connecting, so a restart writes even
when the interval outlasts the process.
- A config path that is a directory (Docker's stand-in for a missing
bind-mount source) fails with a clear message.
- Generated service names take the first free suffix, and suffixed names
are reserved so an explicit name cannot silently collide with them.
- counter_key inside a service's config map is rejected instead of being
overwritten.
- Unknown keys in the config file log a warning without blocking start.
- A .dockerignore keeps local configs and .env out of the build context.
A failed connect or tick now closes the connection and reconnects after one
minute, re-running initialization so a dropped table or row is recreated.
Before, a failing tick logged every interval forever and connect retries
logged every 10 seconds.
Connection URLs that fail to parse no longer appear in logs, since their
error repeats the password.
An unknown adapter or a missing required config key now stops keepalive at
startup instead of silently idling one service.
Valkey speaks the Redis protocol, so the redis adapter (go-redis) already
serves it. Dropping valkey-go removes a dependency and shrinks the stripped
binary by about 9 MB.
The redis adapter now also closes a client that failed to connect only once.
BREAKING CHANGE: `adapter: valkey` is no longer accepted. Use
`adapter: redis` with a redis:// or rediss:// URL instead of valkey:// or
valkeys://. The namespace option now applies to these services.