Focus of this release: smarter anomaly detection. Four new detectors/advisories drawn from real Valkey failure modes, one detection accuracy fix, and a build-system cleanup.
✨ New — Anomaly detection & advisories
- Replica full-resync failure loop (#373, valkey#1836) — Flags a replica that keeps failing full sync and reconnecting in a loop, instead of quietly churning. Surfaces the stuck replica before it burns bandwidth and delays replication indefinitely.
- Orphaned keys in unowned cluster slots (#376, valkey#539) — Detects keys living in hash slots the node no longer owns (e.g. after a resharding that didn't fully migrate), which are otherwise invisible and unreachable through normal cluster routing.
appendfsync=alwaysblocking advisory (#375, valkey#3515) — Raises a config hazard whenappendfsync=alwaysis set, since it fsyncs on the main thread for every write and can severely cap throughput. Called out so operators can make the durability-vs-latency tradeoff deliberately.- Config-drift now covers encoding thresholds (#374, valkey#3479) — Extends config-drift detection to encoding-threshold settings (e.g.
*-max-listpack-*/*-max-intset-*), catching silent memory/CPU regressions from drifted encoding limits.
🐛 Fixed
- Memory-overhead detector no longer false-alarms on underflowed samples (#372) — Underflowed memory readings are now skipped rather than treated as real overhead, removing spurious anomalies.
🔧 Changed / Internal
- Single multi-target Dockerfile (#379) — Consolidated
Dockerfile.prodinto one multi-targetDockerfile, simplifying the build matrix and the publish workflow. No change to published image behavior.
Full changelog: v0.37.0...v0.38.0
What's Changed
- fix(anomaly): skip underflowed memory samples in memory-overhead detector by @jamby77 in #372
- feat(anomaly): detect replica full-resync failure loop (valkey#1836) by @jamby77 in #373
- feat(anomaly): extend config-drift to encoding-threshold configs (valkey#3479) by @jamby77 in #374
- feat(monitor): appendfsync=always main-thread blocking advisory (valkey#3515) by @jamby77 in #375
- feat(anomaly): detect orphaned keys in unowned cluster slots (valkey#539) by @jamby77 in #376
- refactor(docker): merge into a single multi-target Dockerfile by @KIvanow in #379
Full Changelog: v0.37.0...v0.38.0