4.35
stalwartlabs/stalwart4.35Jun 22, 2026by chrislusf
AI Summary
This release prioritizes FUSE/Mount stability, addressing deadlocks and concurrent write issues. It also adds Prometheus metrics for replication operations and improves S3 performance for large remote objects.
Key Highlights
- FUSE deadlock fixes and improved concurrent writeback pattern detection.
- S3 performance improvements for large remote objects (TTFB).
- Prometheus metrics added for replication and volume creation operations.
- Removal of deprecated EC bitrot checksum flags.
- Kafka topic auto-create race condition fix.
Breaking Changes
- Removed `ec.bitrotChecksum` and `ec.bitrotBlockSizeMB` flags.
New Features
- FUSE mount performance optimizations (group ID caching).
- S3 streaming remote-cache wait timeout.
- Prometheus metrics for storage operations.
Full Release Notes
## What's Changed * FUSE * fix(command): preserve fuse option after writers by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9972 * test: add FUSE database load/durability/perf benchmark by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9980 * mount: tolerance-window write pattern detection for concurrent writeback by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9984 * fix(mount): keep a deferred local create from vanishing when its dir is rebuilt by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9991 * fix(mount): pin rebuild entries by their own inode, not inodeToPath by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9993 * mount: fix deadlock reading an uncached remote-mounted file by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9995 * mount: cache supplementary group IDs for non-root access performance by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10008 * fix(mount): run entry invalidations off the meta-cache apply loop by @kisow in https://github.com/seaweedfs/seaweedfs/pull/10002 * feat(mount): attach Content-MD5 to chunk uploads by @kisow in https://github.com/seaweedfs/seaweedfs/pull/10016 * Misc * security.toml: document WEED_ env override for jwt signing keys by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9981 * SECURITY.md: require working repro and trust-boundary impact by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9990 * mq(kafka): don't drop an existing topic when auto-create races by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9998 * Fix typo in SeaweedFS Filer description by @dantetemplar in https://github.com/seaweedfs/seaweedfs/pull/10009 * Logs typos by @m-sementsov in https://github.com/seaweedfs/seaweedfs/pull/10018 * feat: add Prometheus metrics for replication operations by @rushikesh90 in https://github.com/seaweedfs/seaweedfs/pull/10006 * install.sh: fix stale --version example (v3.93 -> 4.34) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10025 * feat: add Prometheus metric for volume creation operations by @rushikesh90 in https://github.com/seaweedfs/seaweedfs/pull/10026 * stats: define metric subsystems as constants by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10027 * Filer * filer: tolerance-window read pattern detection for concurrent readahead by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9983 * filer: skip COLLATE "C" list fallback on CockroachDB by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10015 * Shell * shell: show remote storage name/key in volume.list output by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9987 * fix(shell): return fs.verify topology errors by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9982 * Volume Server * storage: register tier backends at the binary composition root by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9989 * volume: remove ec.bitrotChecksum and ec.bitrotBlockSizeMB flags by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10000 * volume: validate remote S3 endpoints in FetchAndWriteNeedle (Rust) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10001 * volume: detect phantom volumes held open as deleted FDs by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10011 * Master * use Leader() instead of MaybeLeader() in SendHeartbeat by @giftz in https://github.com/seaweedfs/seaweedfs/pull/10029 * S3 API * s3: bound streaming remote-cache wait so large cold GetObject returns 503, not a hang by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9988 * s3api: add optional request interceptor to circuit breaker by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9994 * s3: improve TTFB for large remote objects by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10010 * fix(s3): verify SigV2 using percent-encoded path for Unicode object keys by @sergey-zinchenko in https://github.com/seaweedfs/seaweedfs/pull/10022 * Helm Charts * helm: reject emptyDir for volume idx, and rebuild a missing idx on restart by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10005 * Admin Server and Worker * admin: surface user inline policies in object store user details by @msk-psp in https://github.com/seaweedfs/seaweedfs/pull/10013 * Mini * mini: resolve admin credentials from security.toml and env vars by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10021 ## New Contributors * @dantetemplar made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10009 * @sergey-zinchenko made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10022 **Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.34...4.35